在某些情况下,由于下载速度或其他异步问题,即使我在包含 jquery.js 之后,有时也会收到有关is 的$(document).ready()
抱怨。等等等等等等。$
undefined
我不想这样做:
setTimeout(function() {$(document).ready()... }, 1000);
这似乎很蹩脚。
那么,是否有一种聪明的方法或正确的方法或好的方法来确保 document.ready 真的准备好被调用?:)
在某些情况下,由于下载速度或其他异步问题,即使我在包含 jquery.js 之后,有时也会收到有关is 的$(document).ready()
抱怨。等等等等等等。$
undefined
我不想这样做:
setTimeout(function() {$(document).ready()... }, 1000);
这似乎很蹩脚。
那么,是否有一种聪明的方法或正确的方法或好的方法来确保 document.ready 真的准备好被调用?:)
我相信这实际上是不可能的,(事实是$
这样undefined
),文件头同步加载意味着每一行在下一行之前完全加载
这里有一个视频,对这个确切的测试进行了测试,看来我是对的
视频:http ://www.bennadel.com/blog/1915-How-Javascript-Loading-And-Blocking-Works-By-Default.htm
您是否正确加载文件,例如
<!DOCTYPE html>
<html>
<head>
<title>...</title>
<script type="text/javascript" src="...."></script>
<script type="text/javascript" src="...."></script>
<script type="text/javascript" src="...."></script>
<script type="text/javascript" src="...."></script>
<script type="text/javascript">
jQuery.ready(function(){
//This is executed once all 4 above have been loaded
});
</script>
<script type="text/javascript" src="...."></script>
<script type="text/javascript" src="...."></script>
<!-- The above to scripts are loaded in order after the jquery function has run. -->
</head>
</html>
ready
jQuery的方法只有在洞文档被加载后才会</html>
被触发,直到 DOM 看到最终的结束标记,通常[引用需要]
说了不可能,在IE8或更低版本中可能是可能的,原因是IE可能是有史以来最糟糕的浏览器,但他们说IE9已经彻底大修,应该满足谷歌之类的,苹果、Mozilla 等
如果您使用多个库或覆盖$
变量,您可以在锁定范围内获取它,如下所示:
(function($){
$.ready(function(){
//Do your jQuery here !
});
})(jQuery)
您可以通过执行检查是否加载了 jQuery。
if (typeof jQuery !== 'undefined') {
//do whatever here
}
您不必这样做。最好在 HTML 的末尾和之前包含所有 JavaScript,</body>
首先是 jQuery。这是雅虎推荐的方法。您可以在http://developer.yahoo.com/performance/rules.html阅读更多内容。这不会减慢您的页面加载速度,也不会给您带来未定义 jQuery 的问题。
丹尼斯提供了一个很好的解决方案的链接。我现在正在使用它。
请参阅链接中的答案和解释。
解决方案是:
<script type='text/javascript'>
runScript();
function runScript() {
// Script that does something and depends on jQuery being there.
if( window.$ ) {
// do your action that depends on jQuery.
} else {
// wait 50 milliseconds and try again.
window.setTimeout( runScript, 50 );
}
}
</script>