[英]When should I observe Javascript events on window vs. document vs. document.body?
我正在將prototype.js用於我的網絡應用程序,並且我已經在Chrome,Safari和Firefox上運行了所有內容。 我現在正致力於IE8的兼容性。
正如我在IE中調試的那樣,我注意到有一些Javascript事件,我以前在窗口上設置了一個觀察者,例如
Event.observe(window, eventType, function () {...});
(其中eventType
可能是"dom:loaded"
, "keypress"
等),它在Chrome / Safari / Firefox中運行良好。 然而,在IE中,觀察者永遠不會發射。
至少在某些情況下,我可以通過將觀察者放在window
以外的其他東西上來使用它來工作,例如document
(在"dom:loaded"
的情況下)或document.body
(在"keypress"
的情況下) 。 但是,這都是反復試驗。
是否有更系統的方法來確定這些觀察者的位置,以便結果將跨瀏覽器兼容?
(這不是一個非常全面的答案,但它似乎在經驗上有效 - 所以希望這些經驗法則對其他人有幫助。)
通常,在document
上注冊事件,而不是window
。 Webkit和Mozilla瀏覽器似乎都很滿意,但是IE不響應窗口上注冊的大多數事件,所以你需要使用document
來處理IE
例外: resize
,並且應該在窗口上設置與加載,卸載和打開/關閉相關的事件。
第一個異常的例外: dom:loaded
必須在IE中的document
上設置。
另一個例外:當在啟用了find-as-you-type的情況下檢測Mozilla下的擊鍵時,在window
而不是document
上設置關鍵事件觀察者。 如果你使用后者,find-as-you-type似乎會阻止事件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.