【发布时间】:2010-11-21 10:20:46
【问题描述】:
我刚刚意识到我缺乏关于将页面加载到浏览器中究竟发生什么的基本知识。
假设我有这样的结构:
<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 的“网络”选项卡中,我看到了DOMContentLoaded事件和load事件。DOMContentLoaded事件触发时是否会触发$(document).ready()?找不到任何具体信息(每个人都只提到“加载 DOM 时”)。“加载 DOM 时”究竟是什么意思?浏览器是否已下载并解析了所有 HTML/JS?还是只是 HTML?
是否可能出现以下情况:有一个
$(document).ready()调用last.js中的代码,但在last.js 加载之前运行?它最有可能在哪里(在first.js或内联代码块中)? 如何防止这种情况发生?
我想了解什么时候会发生什么以及什么取决于什么(如果有的话)。
【问题讨论】:
标签: javascript jquery events dom