根据文档,
虽然 JavaScript 提供了在页面呈现时执行代码的加载事件,但在完全接收到所有资产(例如图像)之前,不会触发此事件。
我正在使用$(handler)
没有按预期工作的代码,没有明显的原因。这是我在控制台中运行的一些代码:
>>> document.readyState
"complete"
>>> $(function () { console.log("A") })
[ #document ]
>>> jQuery(function () { console.log("B") })
[ #document ]
我要补充一点,此时不会handler
在其他任何$().ready
地方写任何东西。
但是,请注意何时进行以下后续调用:
>>> jQuery.ready()
A
B
同时,其他地方的任何其他处理程序也将被调用。
准备好的处理程序现在将按预期工作。IE
>>> $(function () { console.log("D"); }
D
我只是好奇为什么 jQuery 在这种情况下可能不起作用,如果有人遇到过类似的事情,以及如何去寻找可能会干扰的东西。
在我使用的 Chrome 开发者工具中,似乎没有任何资源未加载。
不管它值多少钱,代码使用 RequireJS 来异步加载脚本,包括 jQuery,尽管所有的处理程序都是在 jQuery 被加载之后定义的(即包装在 adefine(['jquery'], ...)
或require(['jquery'], ...)
等效的.
编辑
我注意到该问题发生在 Google Chrome 中,但不是 Firefox。我可能错误地认为这个问题也出现在 Firefox 中。
感谢任何见解。