【问题标题】:Order of JS execution in HTML pagesHTML 页面中 JS 的执行顺序
【发布时间】:2011-09-17 18:57:44
【问题描述】:

说我有这样的事情

<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


【解决方案1】:

保证您可以从 somefile.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 ...
});

【讨论】:

  • 我无法从 somefile.js 或内联
  • @John 你可以,但只能在 DOM 完全加载后触发的回调函数中。更新了一个例子。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-10
  • 1970-01-01
  • 2012-06-27
  • 1970-01-01
  • 1970-01-01
  • 2014-03-31
  • 2016-04-07
相关资源
最近更新 更多