从外部脚本手动调用脚本标签 onerror
Call script tag onerror manually from external script
我有以下外部脚本标签(但自己控制 javascript 文件):
<script async
src="//domain/test.js"
onerror="
(function() {
doSomething();
})();
">
</script>
该脚本并不重要,存在一个很好的后备方案。我想触发我的回退:
- 如果
test.js
不可用(有效)
- 在test.js中手动编码。
有没有办法在脚本本身中触发脚本标签的 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();
}
});
我有以下外部脚本标签(但自己控制 javascript 文件):
<script async
src="//domain/test.js"
onerror="
(function() {
doSomething();
})();
">
</script>
该脚本并不重要,存在一个很好的后备方案。我想触发我的回退:
- 如果
test.js
不可用(有效) - 在test.js中手动编码。
有没有办法在脚本本身中触发脚本标签的 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();
}
});