Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.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/82.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?_Javascript_Jquery_Html_Document Ready - Fatal编程技术网

是否在文档准备就绪之前执行内联/块Javascript?

是否在文档准备就绪之前执行内联/块Javascript?,javascript,jquery,html,document-ready,Javascript,Jquery,Html,Document Ready,假设在HTML文档(例如主体)中有内联Javascript代码,那么这段Javascript是否总是在JQuery文档就绪代码之前执行 例如,以下各项是否安全 ... <body> <script type="text/javascript"> var myVar = 2; </script> ... </body> ... $(document).ready(function() { alert('M

假设在HTML文档(例如主体)中有内联Javascript代码,那么这段Javascript是否总是在JQuery文档就绪代码之前执行

例如,以下各项是否安全

...
<body>
    <script type="text/javascript">
        var myVar = 2;
   </script>
   ...
</body>

...
$(document).ready(function() {
    alert('My Var = ' + myVar);
}
。。。
var-myVar=2;
...
...
$(文档).ready(函数(){
警报(“我的风险值=”+myVar);
}

如果不是,我如何确保安全知道
myVar
是在内联/块代码中定义的?

是的,上面的代码是安全的。内联JS是在从上到下解析文档时执行的。文档就绪处理程序是在文档就绪时执行的(显然),并且在解析整个文档(包括内联脚本)之前,它不会准备就绪


请注意,如果在文档体中包含它包装为最后一件事的代码,那么实际上并不需要文档就绪处理程序,因为此时不仅会执行其他内联JS,而且所有文档元素都会被添加到DOM中,因此可以从JS访问。

是的,内联JavaScript在HTML被解析

这样做是安全的,只要您不尝试获取对尚未解析的DOM元素的引用(即HTML源代码中脚本块之后的任何元素)。您还可以引用在早期脚本块上定义的任何变量(只要它们在范围内)


而且,正如马特·布朗(Matt Browne)在他的评论中指出的那样,如果您将依赖于正在加载的DOM的脚本放在关闭的
标记之前,通常不使用DOMContentLoaded侦听器(或旧的解决方法,或window.onload)也是安全的。此时,所有HTML元素都已经在DOM中了(除非在
之后还有其他元素,这将是无效的HTML)。

可以安全地假设
myVAr
可以从
$(document.ready(function(){})
中访问


如果在HTML中运行代码,
myVar
将成为
window
JS全局对象(即
window.myVar
)的一个属性。我认为没有必要在jQuery函数中本地创建它。

相关说明:通常不使用
$(document.ready())也是安全的
如果您将依赖于jQuery的脚本放在结束标记的前面,那么请注意:依赖于jQuery的脚本可以放在包含jQuery.js之后的任何位置。但是我们知道@MattBrowne的意思:依赖于DOM准备就绪的脚本可以放在正文的末尾,而不是放在就绪处理程序中。