Вызов скрипта тега onerror вручную из внешнего скрипта

1

У меня есть следующий скриптовый тег внешнего (но самостоятельного файла javascript):

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

Сценарий не является критическим и существует хороший резерв. Я хочу запустить мой резерв:

  • Если test.js недоступен (это работает)
  • В test.js код вручную.

Есть ли способ инициировать событие onerror тега скрипта в самом скрипте? Или есть другое решение для решения этой проблемы без повторения кода onerror?

  • 0
    onerror вызывается только в том случае, если не удается загрузить скрипт.
  • 0
    @Amy Когда он назначен атрибуту элемента, это просто ссылка на функцию, которую можно свободно вызывать из любого места, где есть доступ к этому элементу.
Теги:

1 ответ

1
Лучший ответ

Если вы можете полностью изменить тег сценария, тогда это легко. Дайте ему идентификатор, и вы можете выбрать его по этому идентификатору и активировать все, что связано с ним. Вот пример...

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();
    }
});
  • 0
    Спасибо! Не знал, что :) Теперь вызываю document.currentScript.onerror(); (с querySelector для IE)
  • 0
    Не беспокойтесь - рад помочь :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню