Действительно ли возможно остановить динамично вставленный тег script?

Так или иначе возможно мешать тегу script загрузиться после того, как, был добавлен к заголовку документа HTML?

Я хотел бы иметь что-то вроде этого:

var script_tag = document.createElement('script');
script_tag.setAttribute('type', 'text/javascript');
script_tag.setAttribute('src', 'http://fail.org/nonexistant.js');
document.getElementsByTagName('head')[0].appendChild(script_tag);

// something like this!!!
script_tag.abort();
10
задан Martin Wittemann 20 January 2010 в 10:57
поделиться

2 ответа

Это невозможно в любом кросс-браузере. Как только тег скрипта добавляется к голове, он будет загружен и анализируется, и даже удаление узла не остановит его.

, который сказал, что Firefox имеет Document.onbeforescriptexecute , который является отменена (где действие по умолчанию будет выполнять целевой скрипт). Это событие изначально было на трассе стандартов, но было недавно удалено из спецификации HTML из-за отсутствия действительных случаев использования.

3
ответ дан 4 December 2019 в 02:50
поделиться

Нет, вы не можете сделать это таким образом. Но вы можете, если вы загрузите его через XMLHTTTREQUEST (AJAX). Таким образом, вы можете прервать связь, если это займет слишком долго.
Например, вы можете использовать Опция Timeout Если вы используете jQuery:

$.ajax({ url: "a.js", dataType: "script", timeout: 1000});

таким образом, если сценарий не загружается в течение 1 секунды (1000 мс), запрос будет прерван. Также вы можете использовать {Async: false} для предотвращения выполнения кода во время загрузки скрипта (если вам нужно).

Проверьте http://api.jquery.com/jquery.ajax/ для получения дополнительных вариантов.

4
ответ дан 4 December 2019 в 02:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: