代码之家  ›  专栏  ›  技术社区  ›  brahn

我应该在什么时候观察window vs.document vs.document.body上的javascript事件?

  •  21
  • brahn  · 技术社区  · 16 年前

    我使用prototype.js作为我的web应用程序,所有的东西都在Chrome、Safari和Firefox上运行。我现在正在研究IE8的兼容性。

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

    (其中 eventType "dom:loaded" , "keypress" 等等),它在Chrome/Safari/Firefox中运行良好。然而,在IE中,观察者从不开火。

    window ,例如。 document (对于 “dom:已加载” )或者 document.body (对于 “按键” ). 然而,这都是试错。

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

    2 回复  |  直到 7 年前
        1
  •  1
  •   outis    16 年前

    各种浏览器的对象文档(例如。 window 在MSDN上, document

        2
  •  36
  •   brahn    16 年前

    (这不是一个超级全面的答案,但它似乎是经验之谈——所以希望这些经验法则能对其他人有所帮助。)

    • 通常,在上注册事件 document ,不是 window . Webkit和mozilla浏览器似乎对此都很满意,但是IE对窗口上注册的大多数事件都没有响应,所以您需要使用 文件 与IE合作

    • 例外情况: resize ,与加载、卸载和打开/关闭相关的事件都应在窗口上设置。

    • 第一个例外的例外: dom:loaded 必须设置为 文件 在IE中。

    • 另一个例外是:在Mozilla下启用“键入时查找”检测击键时,请在 窗口 ,而不是 . 如果您执行后一种操作,输入时查找似乎会阻止事件。

    推荐文章