当<脚本>标签在html文件中遇到

What happened when a <script> tag is encountered within a html file?

本文关键字:html 文件 遇到 gt lt 脚本 标签      更新时间:2023-09-26

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

通常,浏览器会停止它正在做的一切——停止渲染、停止事件循环、停止侦听或对输入执行操作。这种状态被称为"阻塞"。然后它执行脚本块中的任何内容,或者通过GET请求检索src属性中引用的脚本,然后在脚本到达时执行。在执行之后,浏览器摆脱了阻塞,继续解析DOM。

如果我没记错的话,脚本源不是异步加载的,这意味着在加载之前执行将停止。因此,不需要一个宣布何时完成的活动。如果我错了,希望有人能纠正我的错误。

这在HTML5CR中的script元素部分中进行了描述。在本例中,由于既不使用defer属性,也不使用async属性,因此浏览器将在继续处理HTML文档之前获取(使用GET请求(并执行脚本。因此,默认处理是同步阻塞行为。

但是,如果您真正使用像<script src="http://...example.js"/>这样没有结束标记</script>的标记,则根本不会提取脚本,除非您为HTML文档提供XML内容类型的罕见情况。原因是<script src="http://...example.js"/>仅被解析为开始标签,因此所有其他内容都被解析为script元素的内容,而当没有解析结束标签时,script元素就没有完成。所以不要试图使用"self-closed"语法;而是写入<script src="http://...example.js"></script>