簡體   English   中英

我何時應該在窗口與文檔與document.body上觀察Javascript事件?

[英]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似乎會阻止事件。

各種瀏覽器的對象文檔(例如MSDN上的window ,MDC上的document )定義了對象支持的事件。 你可以從那里開始。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM