HTML页面中JS执行的顺序

Joh*_*ohn 5 html javascript

说我有这样的事情

<script type="text/javascript" src="somefile.js"></script>
<div>something</div>
<script type="text/javascript">
// Some INLINE javascript
</script>
Run Code Online (Sandbox Code Playgroud)

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

phi*_*hag 4

确保您可以从 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>
Run Code Online (Sandbox Code Playgroud)

jQuery 显着简化了它,你只需编写

$(function() {
   // inline code ...
});
Run Code Online (Sandbox Code Playgroud)