在html文件中遇到<script>标记时发生了什么?</script>

时间:2014-05-04 20:00:44

标签: javascript html http javascript-events

我只是想知道HTML文件中遇到<script src="http://...example.js"/>的时候会发生什么?是否有一些事件处理程序或者会发送一些get请求?

3 个答案:

答案 0 :(得分:3)

通常,浏览器会停止它所做的一切 - 停止渲染,停止事件循环,停止收听或对输入采取行动。这种状态被称为&#34;阻塞。&#34;然后它执行脚本块中的任何内容,或者通过GET请求检索src属性中引用的脚本,然后在它到达时执行它。执行后,浏览器退出阻塞并继续解析DOM。

答案 1 :(得分:2)

如果我没记错的话,脚本源不会异步加载,这意味着执行将在加载之前停止。因此,没有必要在事件发生时宣布。如果我错了,希望有人会纠正我。

答案 2 :(得分:1)

这在HTML5 CR中的script element部分中有所描述。在示例情况下,由于既未使用defer也未使用async属性,因此浏览器将获取(使用GET请求)并在继续处理HTML文档之前执行脚本。因此,默认处理是同步阻塞行为。

但是,如果您确实使用<script src="http://...example.js"/>之类的标记而没有结束标记</script>,则根本不会提取该脚本,除非在极少数情况下您使用XML内容类型提供HTML文档。原因是<script src="http://...example.js"/>仅被解析为开始标记,因此所有其余的都被解析为script元素的内容,并且当没有解析结束标记时,script元素是没完成。所以不要试图使用“自我关闭”语法;相反,写下<script src="http://...example.js"></script>