提问人:John 提问时间:6/18/2011 更新时间:6/18/2011 访问量:1578
HTML 页面中 JS 的执行顺序
Order of JS execution in HTML pages
问:
假设我有这样的东西
<script type="text/javascript" src="somefile.js"></script>
<div>something</div>
<script type="text/javascript">
// Some INLINE javascript
</script>
是否保证(所有浏览器)在执行内联 js 代码时都加载了 somefile.js 并且它可以在它之前的 div 上运行?
答:
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 完全加载后触发的回调函数中。更新了一个示例。
评论