У меня есть следующий скриптовый тег внешнего (но самостоятельного файла javascript):
<script async
src="//domain/test.js"
onerror="
(function() {
doSomething();
})();
">
</script>
Сценарий не является критическим и существует хороший резерв. Я хочу запустить мой резерв:
test.js
недоступен (это работает)Есть ли способ инициировать событие onerror тега скрипта в самом скрипте? Или есть другое решение для решения этой проблемы без повторения кода onerror?
Если вы можете полностью изменить тег сценария, тогда это легко. Дайте ему идентификатор, и вы можете выбрать его по этому идентификатору и активировать все, что связано с ним. Вот пример...
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();
(с querySelector для IE)
onerror
вызывается только в том случае, если не удается загрузить скрипт.