Javascript 如何保证jQuery$已初始化?
在另一个问题中,StackOverflow提出,无论标签在Javascript 如何保证jQuery$已初始化?,javascript,jquery,html,Javascript,Jquery,Html,在另一个问题中,StackOverflow提出,无论标签在或中的位置如何,都无法保证浏览器处理标签的顺序(请参见注释): 上面的答案建议使用纯javascript“DOM loaded”来保证加载所有依赖项,然后运行特定于页面的代码 这让我怀疑使用jQuery推荐的$function替代加载的纯JSDOM是否安全: // Shorthand for $( document ).ready() $(function() { console.log( "ready!" ); }); Sr
或
中的位置如何,都无法保证浏览器处理
标签的顺序(请参见注释):
上面的答案建议使用纯javascript“DOM loaded”来保证加载所有依赖项,然后运行特定于页面的代码
这让我怀疑使用jQuery推荐的$function替代加载的纯JSDOM是否安全:
// Shorthand for $( document ).ready()
$(function() {
console.log( "ready!" );
});
Src:
我如何保证jQuery的$将被定义
编辑:要求提供假设故障的示例。这里有一个在
中带有外部
的:
例1
$(函数(){
警报(“已加载”);
});
还有一个在
中带有外部
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Example 1</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
</head>
<body>
<script>
$(function(){
alert("Loaded.");
});
</script>
</body>
</html>
例1
$(函数(){
警报(“已加载”);
});
基于,这两个选项中的任何一个都可能失败。此问题基于错误的前提。参考问题是针对使用TurboLinks的应用程序,该应用程序可以有效地将静态站点转换为单页应用程序。因此,我的
标记是动态插入的,不能保证它们会按顺序运行。您可以反复检查jQuery是否已加载,直到加载为止,此时您运行一些代码
<script>
function doStuff() {
//do jQuery stuff
}
function checkLoaded() {
if(typeof jQuery == 'undefined') {
setTimeout(function() {
checkLoaded();
}, 50);
} else {
doStuff();
}
}
checkLoaded();
</script>
函数doStuff(){
//做jQuery的事情
}
函数checkLoaded(){
if(typeof jQuery=='undefined'){
setTimeout(函数(){
checkLoaded();
}, 50);
}否则{
doStuff();
}
}
checkLoaded();
脚本是按遇到的顺序加载的,除非您设置了延迟或异步,所以这不是问题。这个问题和你的问题很相似,而且有很好的效果answers@adeneo这显然是不对的。请参阅“Chrome中的脚本加载无序”@Colin-肯定还有其他事情发生,数十亿网站和用户依赖于脚本每天按顺序加载的事实。我投票结束这个问题,因为你后来说它基于一个错误的前提。
<script>
function doStuff() {
//do jQuery stuff
}
function checkLoaded() {
if(typeof jQuery == 'undefined') {
setTimeout(function() {
checkLoaded();
}, 50);
} else {
doStuff();
}
}
checkLoaded();
</script>