手动从外部脚本调用调用脚本标签的onerror方法

3

我有一个外部(但自控)javascript文件的以下脚本标签:

<script async 
    src="//domain/test.js" 
    onerror="
        (function() {
            doSomething(); 
        })(); 
    ">
</script>

该脚本不是关键性的,已经有一个良好的备用方案存在。我想要触发我的备选方案:

  • 如果test.js不可用(这个可以实现)
  • 在test.js代码中手动处理。

是否有一种方法可以在脚本本身中触发脚本标签的onerror事件?或者是否有其他解决方案可以避免重复编写onerror代码?


只有在脚本加载失败时才会触发onerror - user47589
@Amy 一旦它被分配给元素属性,那么它就是一个函数引用,可以在任何可以访问该元素的地方自由调用。 - Reinstate Monica Cellio
1个回答

4

如果您可以修改脚本标记,则很容易实现。给它一个id,然后您可以通过该id选择它并触发与之连接的所有内容。以下是一个示例...

document.querySelector("#script-tag").onerror();
<script id="script-tag" onerror="(function() { alert('error!!!'); })()"></script>

如果您无法修改脚本标签,那么您可以通过它具有onerror属性来识别它...
document.querySelector("script[onerror]").onerror();

如果您有多个带有 onerror 属性的脚本,则可以手动获取所有脚本并解析它们,查找文件名。
document.querySelectorAll("script").forEach(function(script) {
    if (script.indexOf("test.js") != -1) {
        script.onerror();
    }
});

谢谢!我不知道那个 :) 现在使用 document.currentScript.onerror();(对于IE使用querySelector)进行调用。 - Saa
没问题 - 很高兴能帮忙 :) - Reinstate Monica Cellio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接