HTML 页面中 JS 的执行顺序

Order of JS execution in HTML pages

提问人:John 提问时间:6/18/2011 更新时间:6/18/2011 访问量:1578

问:

假设我有这样的东西

<script type="text/javascript" src="somefile.js"></script>
<div>something</div>
<script type="text/javascript">
// Some INLINE javascript
</script>

是否保证(所有浏览器)在执行内联 js 代码时都加载了 somefile.js 并且它可以在它之前的 div 上运行?

JavaScript HTML

评论

0赞 rahim asgari 6/18/2011
看看这个:stackoverflow.com/questions/19035/javascript-load-order

答:

4赞 phihag 6/18/2011 #1

可以保证您可以从某个文件.js访问代码。

但是,DOM 目前尚未准备就绪,因此您无法访问 div。如果要执行此操作,请使用以下构造:

<div>something</div>
<script type="text/javascript">
// document.write calls go here, not in onReady

function onReady() {
    document.getElementsByTagName('div')[0].setAttribute('class', 'loaded');
    // Or other inline JavaScript
}

if (document.addEventListener) {
    document.addEventListener('DOMContentLoaded', onReady, false);
} else {
    window.onload = onReady;
}
</script>

jQuery大大简化了它,你只需写

$(function() {
   // inline code ...
});

评论

0赞 John 6/18/2011
我无法从某个文件.js或从内联 <script> 访问 div?
0赞 phihag 6/18/2011
@John,但只能在 DOM 完全加载后触发的回调函数中。更新了一个示例。