2

根据文档

虽然 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 中。

感谢任何见解。

4

1 回答 1

1

不管它值多少钱,对于下一个遇到这种情况的人来说,包含的uservoice代码似乎一直在破坏本机 jQuery 调用,因此jQuery.ready()永远不会被调用。

于 2013-02-14T03:29:56.350 回答