[英]Determine what triggered focus event?
我需要確定導致焦點事件的原因。
理想情況下,我想區分單擊、選項卡/鍵盤輸入和手動(通過代碼)觸發器。
我怎樣才能做到這一點?
我正在查看事件 object,但我沒有看到任何太有用的東西。
如果焦點來自$x.focus()
調用,則該事件將沒有originalEvent
屬性,因為沒有來自瀏覽器的事件,所以:
if(ev.hasOwnProperty('originalEvent')) {
// Focus event was manually triggered.
}
為了區分基於鍵盤和鼠標的焦點事件,您可以嘗試將keydown
處理程序綁定到其他所有內容以檢測Tab或Shift-Tab但這將是一個嚴重的黑客攻擊並且可能不可靠; 例如,在 iPad 上,您沒有按Tab鍵移動到下一個字段,而是在彈出鍵盤中按Next或Previous來移動,這些可能根本不會注冊為按鍵。
還有一個類似的關於click
事件的問題可能也很有趣:
正如您在評論中指出的那樣,您可以捕獲click
事件以檢測基於鼠標的焦點更改並在某處設置標志以記住它。 然后你會有這個:
originalEvent
,則手動觸發焦點更改(即$x.focus()
或類似的)。您必須注意單擊和焦點事件的順序正確,並且您需要確保在完成后清除標志。 這可能不是防彈的,但也許不需要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.