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

Call script tag onerror manually from external script

我有以下外部脚本标签(但自己控制 javascript 文件):

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

该脚本并不重要,存在一个很好的后备方案。我想触发我的回退:

有没有办法在脚本本身中触发脚本标签的 onerror 事件?或者是否有另一种解决方案来解决这个问题而不重复 onerror 代码?

如果您完全可以修改脚本标签,那就很容易了。给它一个 id,你可以通过该 id select 它并触发附加到它的任何东西。这是一个例子...

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();
    }
});