Jér*_*nge 9 html javascript jquery document-ready
假设一个HTML文档中的内联Javascript代码(例如正文),这个Javascript代码总是在JQuery文档就绪代码之前执行吗?
例如,以下安全吗?
...
<body>
<script type="text/javascript">
var myVar = 2;
</script>
...
</body>
...
$(document).ready(function() {
alert('My Var = ' + myVar);
}
Run Code Online (Sandbox Code Playgroud)
如果没有,我怎样才能确保安全知道myVar在内联/块代码中定义?
nnn*_*nnn 12
是的,上面的代码是安全的.在从上到下解析文档时遇到内联JS.文档就绪处理程序在文档准备就绪时执行(显然),并且在整个文档被解析(包括内联脚本)之前它不会就绪.
请注意,如果将包装的代码作为文档正文中的最后一个包含,那么您实际上并不需要文档就绪处理程序,因为此时不仅会执行其他内联JS,而且所有文档元素都将被执行添加到DOM,因此可以从JS访问.
是的,在解析HTML时执行内联JavaScript.
这样做是安全的,只要您不尝试获取对尚未解析的DOM元素的引用(即HTML源代码中脚本块之后的任何元素).您还可以引用在早期脚本块上定义的任何变量(只要它们在范围内).
而且,正如Matt Browne在他的评论中指出的那样,如果你把依赖于DOM的脚本放在结束</body>标记之前,那么通常也不会使用DOMContentLoaded监听器(或oldIE解决方法或window.onload).此时,所有HTML元素都已经在DOM中(除非您之后有其他元素</body>,这将是无效的HTML).