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