【问题标题】:Detect network errors in <script> tags检测 <script> 标签中的网络错误
【发布时间】:2014-07-25 02:17:22
【问题描述】:

这是我试图在Javascript detect static <script> load failues 中提出的问题,但我想我可能混淆了这个问题。

我的问题是:假设我在某些 HTML 中有一个 &lt;script&gt; 标记并且它没有加载,不是因为代码中的任何错误,而是因为网络错误。有没有办法以编程方式通知此网络错误?我看到我可以将onerror 事件附加到脚本标记,但它的回调只得到一个传递给它的Event 对象并且没有关于网络故障的信息。

相比之下,如果我通过 Ajax 动态加载脚本,我有一个 XHR 对象,其中包含一些我可以在其中使用的信息。我正在寻找与静态&lt;script&gt; 标签相媲美的东西。

基本上我想要的是这样的

<script src="/path/to/script.js" type="text/javascript" onerror="handleError(event)"></script>

<script type='text/javascript'>
       function handleError(event) {
            // do stuff;
       }
</script>

“stuff”将包含阻止脚本加载的网络错误的详细信息。

【问题讨论】:

    标签: javascript html


    【解决方案1】:

    请发布代码以帮助我们帮助您。

    无论页面是否加载,网络错误都不会导致脚本错误,除非外部文件加载失败或 ajax 命令返回非 200 状态。如果问题来自 ajax,您可以在响应代码准备好时测试 ajax 对象,如果它不是 200,您可以运行通知或重试代码,如果错误来自外部 .js 文件由于任何原因未加载在js文件中添加一个变量比如var loaded = true;然后在你的主文件中检查它并根据需要做出反应。

    【讨论】:

    • 我知道我能做到。我是说我想明确知道是什么导致它无法加载 - 是网关超时、请求中止还是其他原因。
    • 没有办法测试嵌入式资源上的 400/500 错误我不相信,但是 ajax 确实以标准响应类型响应,因此 ajax 可以提供相关信息,但没有 embeded 。 js 文件。
    • 谢谢。我担心可能是这种情况,但无法确认。
    猜你喜欢
    • 2017-04-29
    • 1970-01-01
    • 2017-05-29
    • 2021-06-29
    • 2012-07-07
    • 1970-01-01
    • 2020-09-30
    • 2015-09-27
    • 1970-01-01
    相关资源
    最近更新 更多