【问题标题】:requirejs with jQuery .domready() is not fired correctly带有 jQ​​uery .domready() 的 requirejs 未正确触发
【发布时间】:2012-12-25 09:34:36
【问题描述】:

当您使用 requirejs 2.1.1 加载 jquery 1.8.2 - $(document).ready() $(window).load() 事件开始表现得很奇怪。

有时只有其中一个会被触发,有时两者都会触发,但在所有情况下,它们都会在加载所有内容、图像等后触发 -.load() event

切换到 jQuery 1.7.2 使 .load() 正常工作,尽管 .ready() 充当 .load() 并且永远不会在真正的 DOM 就绪事件上触发。我在这里做错了什么还是不仅仅是我有这些问题?

示例(打开控制台并刷新):

http://jsbin.com/epujom/5

来源

http://jsbin.com/epujom/5/edit

编辑: 我已经更新了测试用例。现在可以清楚地看到 jQuery.isReady = false 即使 DOM 已准备好

【问题讨论】:

  • 我对 requirejs 如何加载依赖关系不是很熟悉,但是当你的(非常小的)dom 完成解析时,jQuery.js 是否还没有完成加载?
  • 希望每个人都能针对他们的问题提供如此完整的测试用例。就主题而言,jQuery 加载时间会不会比整个 DOM 更长(因为你只有一个图像?)这样准备好的处理程序会延迟到 jQuery 加载。

标签: javascript jquery requirejs jquery-events domready


【解决方案1】:

我能达到我想要的结果的唯一方法是在 head 部分中加载 domready 插件,如

https://github.com/freelancephp/DOMReady

https://github.com/requirejs/domReady

domready 插件或附加事件应始终在实际浏览器 domready 事件发生之前运行,否则它们都在等待加载所有图像,这不是您想要的。

【讨论】:

    【解决方案2】:

    RequireJS 提供了一个lightweight domReady module,您可以将其与其他模块一起使用。通过这样做,您无需在 dom 就绪功能可用之前等待 jQuery 被加载和解析。

    更多细节 - http://requirejs.org/docs/api.html#pageload

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-11
      • 1970-01-01
      • 2014-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多