考虑以下文件
<html>
<body>
This is some content
<script type="text/javascript" src="verySlowToRespond.js"></script>
This is some more content
</body>
</html>
我首先要检查一下我的假设,即在脚本加载并执行之前,浏览器解析超出script
标记是不安全的。
这意味着(如果我的假设是正确的),说verySlowToRespond.js
需要20秒才能响应,在解决此依赖关系之前,页面DOM无法完全组合。
假设verySlowToRespond.js
无限期地挂了?浏览器会在什么时候放弃并继续解析?
答案 0 :(得分:3)
正确:浏览器不会继续超出脚本标记,直到它被读取并对其进行评估。
浏览器根据它用于页面的相同超时规则放弃。这取决于浏览器,以及超时的确切性质。
我想知道为什么会有这样一个缓慢回应的脚本。你的托管有什么问题吗?脚本缓慢响应,还是加载然后需要很长时间才能运行?
答案 1 :(得分:2)
是的,你的第一个假设是正确的。浏览器停止渲染,直到<script>
标记完成加载和执行。
非常长时间运行的scrips上的行为取决于浏览器。较新的浏览器通常会让您有机会中止脚本。较旧的浏览器可能需要强制关闭。
答案 2 :(得分:1)
你是对的。在脚本完成之前,浏览器不会呈现页面的其余部分。超时将取决于我想的底层套接字属性。
如果您担心脚本的加载时间,那么在页面的其余部分呈现之前,脚本不需要执行任何需要执行的DOM更改。然后,您可以添加onload
处理程序来调用setTimeout
来执行代码以异步加载脚本。