我刚刚意识到我缺乏对页面加载到浏览器时到底发生了什么的基本知识。
假设我有这样的结构:
<head>
<script src="jquery.js" type="text/javascript"></script>
<script src="first.js" type="text/javascript"></script>
</head>
<body>
...
<script type="text/javascript" id="middle">
// some more JS here...
</script>
...
<script src="last.js" type="text/javascript"></script>
</body>
以下是我的问题:
事情发生的顺序是什么?首先执行 DOM 然后执行 JS,是反之亦然,还是同时执行(或在 JS 文件下载完成后立即执行,不考虑 DOM)?我知道脚本是按顺序加载的。
$(document).ready()
适合放在哪里?在 Firebug 的 Net 选项卡中,我看到了DOMContentLoaded
事件和load
事件。是$(document).ready()
当触发DOMContentLoaded
事件触发?找不到关于此的任何具体信息(每个人都只提到“加载 DOM 时”)。“加载 DOM 时”究竟是什么意思?所有的 HTML/JS 都已经被浏览器下载并解析了吗?或者只是HTML?
以下场景是否可能:有一个
$(document).ready()
调用 中的代码last.js
,但在加载 last.js 之前运行?它最有可能在哪里(在first.js
或内联代码块中)?我怎样才能防止这种情况?
我想了解什么时候发生什么以及什么取决于什么(如果有的话)的大局。