Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何保证jQuery$已初始化?_Javascript_Jquery_Html - Fatal编程技术网

Javascript 如何保证jQuery$已初始化?

Javascript 如何保证jQuery$已初始化?,javascript,jquery,html,Javascript,Jquery,Html,在另一个问题中,StackOverflow提出,无论标签在或中的位置如何,都无法保证浏览器处理标签的顺序(请参见注释): 上面的答案建议使用纯javascript“DOM loaded”来保证加载所有依赖项,然后运行特定于页面的代码 这让我怀疑使用jQuery推荐的$function替代加载的纯JSDOM是否安全: // Shorthand for $( document ).ready() $(function() { console.log( "ready!" ); }); Sr

在另一个问题中,StackOverflow提出,无论标签在
中的位置如何,都无法保证浏览器处理
标签的顺序(请参见注释):

上面的答案建议使用纯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>