【问题标题】:JQuery, DOMContentLoaded and load eventsJQuery、DOMContentLoaded 和加载事件
【发布时间】:2014-05-24 13:31:35
【问题描述】:

我试图理解为什么 JQuery 启动过程同时使用 DOMContentLoaded(document event) 和 load(window event),

这里是代码:http://code.jquery.com/jquery-2.1.1.js(第 3418-3429 行)。

我不明白的另一件事是使用false作为addEventListener第三个参数,我的意思是根据MDN默认已经是false所以为什么他们发送false ?.

最后还有一条奇怪的评论:

// A fallback to window.onload, that will always work
window.addEventListener("load", func, false);

我在代码中找不到window.onload事件,那为什么他们说window.addEventListener是没有时的回退window.onload?

编辑:

关于false第三个论点我现在明白了我没有看到MDN的这句话:

注意:useCapture 仅在更新版本的 主要浏览器;例如,在 Firefox 6 之前它不是可选的。 您应该提供此参数以获得最广泛的兼容性。

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    我在代码中找不到window.onload事件,为什么他们说window.addEventListener是没有window.onload时的回退?

    window.addEventListener("load", func, false); 等价于window.onload

    addEventListener 的错误参数是useCapture。来自 MDN:

    如果为真,useCapture 表示用户希望启动捕获。启动捕获后,指定类型的所有事件将被分派到注册的侦听器,然后再分派到 DOM 树中它下面的任何 EventTarget。通过树向上冒泡的事件不会触发指定使用捕获的侦听器。有关详细说明,请参阅 DOM 级别 3 事件。如果未指定,useCapture 默认为 false。

    【讨论】:

    • Rory,谢谢你的回答我现在明白 false 的使用,但你能解释为什么他们在评论中说“那将永远有效”,例如 window.onload 什么情况下不起作用?,为什么要使用“load”和“DOMContentLoaded”事件?
    • @AvielFadida 你搞错了。 DOMContentLoaded 在非常旧的浏览器中不完全支持,因此它们使用 window.onload 作为后备。
    • 所以如果我知道他们更喜欢DOMContentLoaded 但如果不支持他们使用window.onload?
    • 最后要问的是,为什么他们在评论中说“这将永远有效”我的意思是为什么 window.onload 不起作用?
    • 不,你又搞错了。 window.onload总是工作,这就是为什么它是后备。
    猜你喜欢
    • 2015-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-01
    • 2011-08-12
    • 2023-03-06
    • 1970-01-01
    相关资源
    最近更新 更多