2012-02-09 20 views
2

我目前正在研究一些项目,其中一些错误在我们的jQuery AJAX调用中弹出。在大多数情况下,我们有一些元素需要进行初始化,以便在点击时(或其他事件触发器)执行某些操作。我们已经决定解决其中的一些问题,以在html结尾使用内联脚本,而不是依赖于$(document).ready事件触发器。在应用程序中是否有加载jQuery的竞争条件?

然而,这导致我们想知道如果jQuery库本身(它正在通过谷歌加载)没有足够快地加载,会发生什么。特别是IE浏览器,浏览器是否会智能地等待执行这些代码行,直到加载jQuery库?在这种情况下,竞争条件是否可能?到目前为止,我们大多数的问题似乎都出现在IE(甚至8和9)或Firefox的少数情况下。

编辑: 从使用$(document).ready事件触发的改变建议在How can I ensure that a link's default action is always disabled?其中也涉及到这个问题的情况。它似乎与html底部的内联脚本一起工作良好。目前还不清楚问题是否因为jQuery没有加载(或其他元素),或者如果事件从未正确触发。

回答

1

我不明白了一个道理,为什么会放置Ajax调用会更好以外$(document).ready ......要加载实际$(document).ready等待所有文件...这就是为什么它被使用(当然,不是only reason

所以,只要你的jQuery Ajax调用被放置在$(document).ready回调中,你可以确定你所有的js文件都是在这之前加载的,并且你应该在其他地方寻找你的问题的原因。

+0

但是,如果jQuery由于某种原因被加载延迟会发生什么? $(document).ready会失败,因为它依赖于被加载的jQuery对浏览器有意义吗? – Kenneth 2012-02-09 20:37:21

+1

它不会失败,只要您的

0

某些浏览器在加载跨域脚本之前加载本地服务器上的所有javascript。因此,在从Google加载jQuery库之前,可能首先加载脚本。我会建议使用$(document).ready触发器。