Skip to main content
 首页 » 编程设计

javascript之我什么时候应该观察窗口、文档和 document.body 上的 Javascript 事件

2024年08月12日9三少

我正在为我的网络应用程序使用prototype.js,并且所有内容都在 Chrome、Safari 和 Firefox 上运行。我现在正在研究 IE8 兼容性。

当我在 IE 中调试时,我注意到我之前在窗口上设置了观察者,例如 Javascript 事件,例如

Event.observe(window, eventType, function () {...}); 

(其中 eventType 可能是 "dom:loaded""keypress" 等),它在 Chrome/Safari/Firefox 中工作得很好。然而,在 IE 中,观察者永远不会触发。

至少在某些情况下,我可以通过将观察者放置在 window 以外的其他位置来使其在 IE 上工作。 ,例如document (在 "dom:loaded" 的情况下)或 document.body (在 "keypress" 的情况下)。然而,这都是反复试验的结果。

是否有一些更系统的方法来确定将这些观察者放置在哪里,以便结果跨浏览器兼容?

请您参考如下方法:

(这不是一个 super 全面的答案,但它似乎是根据经验得出的——所以希望这些经验法则对其他人有帮助。)

  • 一般来说,在文档上注册事件,而不是窗口。 Webkit 和 mozilla 浏览器似乎都对这两种浏览器都很满意,但 IE 不会响应窗口上注册的大多数事件,因此您需要使用 document 来与 IE 配合使用

  • 异常(exception):调整大小,以及与加载、卸载和打开/关闭相关的事件都应该在窗口上设置。

  • 第一个异常(exception)的异常(exception):必须在 IE 中的 document 上设置 dom:loaded

  • 另一个异常(exception):在启用“按输入查找”功能的 Mozilla 下检测击键时,请在窗口(而不是文档)上设置按键事件观察器。如果您执行后者,则“按输入查找”似乎会阻止该事件。