Javascript的加载超时

Javascript的加载超时,javascript,dom,Javascript,Dom,考虑以下文件 <html> <body> This is some content <script type="text/javascript" src="verySlowToRespond.js"></script> This is some more content </body> </html> 这是一些内容 这是更多的内容 我想首先检查一下我的假设

考虑以下文件

<html>
    <body>
        This is some content
        <script type="text/javascript" src="verySlowToRespond.js"></script>
        This is some more content
    </body>
</html>

这是一些内容
这是更多的内容
我想首先检查一下我的假设,即在加载并执行脚本之前,浏览器在
脚本
标记之外进行解析是不安全的

这意味着(如果我的假设是正确的),比如说
veryslowtorenspond.js
需要20秒才能响应,在解决此依赖关系之前,页面DOM无法完全组装


假设
veryslowtorepond.js
无限期地挂起?浏览器会在什么时候放弃并继续解析?

是的,您的第一个假设是正确的。浏览器停止渲染,直到
标记完成加载和执行


长时间运行的纸条上的行为取决于浏览器。较新的浏览器通常会让您有机会中止脚本。较旧的浏览器可能需要强制关闭。

正确:在读取并评估脚本标记之前,浏览器不会继续运行到脚本标记之外

浏览器将根据其用于页面的相同超时规则放弃。这取决于浏览器和超时的确切性质


我想知道为什么会有反应迟钝的剧本。你的主机有问题吗?脚本响应速度慢,还是加载后需要很长时间才能运行?

您是正确的。在脚本完成之前,浏览器不会呈现页面的其余部分。我认为超时将取决于底层套接字属性


如果您关心脚本的加载时间,那么脚本在呈现页面其余部分之前不进行任何需要执行的DOM更改是很重要的。然后,您可以添加一个
onload
处理程序来调用
setTimeout
来执行代码以异步加载脚本。

我没有硬性数字,但根据我的经验,Firefox的超时时间大约在20-30秒之间。这是在每个浏览器中单独设置的值。这是我避免将JS放入浏览器中并更喜欢在加载时运行脚本的原因之一。这是一个假设性的问题,我必须问,因为我们正在向第三方页面提供基于Javascript的小部件,如果我们的服务器没有处于最佳状态,它们可能会遇到由我们引起的问题。我们不希望一个快速的CDN站点被拖慢等待我们交付。我已经有了一个更好的交付机制,但我正在尝试编写文档来支持我在以前的交付方法中发现的问题。解决这个问题的一个方法是将您的内容包含在
中。如果这样做,那么浏览器就不会等待,因为框架被视为一个完全独立的页面环境。在框架内,浏览器当然会等待,但这不会影响包含的页面。@在iframe中缓慢加载资源会延迟父页面的onload事件,这在向第三方页面提供小部件时是有问题的。@AndyFord是这样的;如果“加载”事件很重要,那么就没有多少事情要做了。