gpt4 book ai didi

javascript - 无法加载远程 javascript 文件是否会停止在任何浏览器中执行 javascript?

转载 作者:可可西里 更新时间:2023-11-01 02:22:48 27 4
gpt4 key购买 nike

我有一个独立的脚本文件,我想从第 3 方服务器加载:

<script type="text/javascript" src="//some_server/logger.js"></script> 

远程脚本有时不存在的可能性很小 (404),我想确保包含此脚本不会影响我的应用程序的运行方式,因为我的应用程序不会'不需要加载脚本即可工作(它是一种分析跟踪器)

我能否安全地包含此脚本,而不会阻塞或在我的应用程序中导致阻止其他 javascript 运行的 javascript 错误?

我正在考虑添加 asyncdefer 属性以使脚本延迟加载。这够了吗?我的应用需要在 IE8 及更高版本上运行。

这是我现在的想法:

<script async defer type="text/javascript" src="//some_server/logger.js"></script> 

<script type="text/javascript">
console.log("I want this to always execute, no matter if the above script 404's or not!");
</script>

最佳答案

Can I include this script safely without it blocking or causingjavascript errors in my app that stop other javascript from running?

是的,你可以

404 不会以任何方式停止 javascript 的执行,只有错误会。
只要服务器以 404 响应并且没有挂起,未加载的脚本就不会导致任何明显的延迟。

这可以通过记录检查 404 或损坏链接所需的时间在不同的浏览器中进行测试。
浏览器记录时间这一事实表明,此类脚本不会停止 javascript 的执行,线程始终继续执行下一个脚本标记,除非解析器在脚本中遇到错误,如果找不到 URL,则不会浏览器会抛出一个错误,它会在 URL 未解析时立即继续。

<script>console.time('Test');</script>
<script type="text/javascript" src="http://www.broken.url/file.js"></script>
<script>console.timeEnd('Test');</script>

FIDDLE

在 IE、Chrome、Firefox 和 Opera 中进行的测试表明,所有浏览器都使用不到 0.0002 秒来解析断开的链接,解析 404 所需的时间取决于服务器响应的速度,但对于 Google 的服务器来说似乎在返回 404 状态代码之前在所有浏览器中始终小于 0.2 秒,并且浏览器继续执行下一个脚本。

即使添加 20 个全部返回 404 的脚本,服务器通常也需要不到半秒的时间来解析并继续运行

FIDDLE

换句话说,您可以安全地添加任何具有损坏链接或返回 404 的脚本,它不会破坏任何东西,也不会以任何方式挂起浏览器,现代只需要几毫秒浏览器确定无法加载脚本,然后继续。

你不能做的是包含实际加载的脚本,并且包含 fatal error ,因为这将停止整个线程,以及在遇到错误后执行的任何脚本。

关于javascript - 无法加载远程 javascript 文件是否会停止在任何浏览器中执行 javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27863927/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com