Так или иначе возможно мешать тегу 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();
Это невозможно в любом кросс-браузере. Как только тег скрипта добавляется к голове, он будет загружен и анализируется, и даже удаление узла не остановит его.
, который сказал, что Firefox имеет Document.onbeforescriptexecute
, который является отменена (где действие по умолчанию будет выполнять целевой скрипт). Это событие изначально было на трассе стандартов, но было недавно удалено из спецификации HTML из-за отсутствия действительных случаев использования.
Нет, вы не можете сделать это таким образом. Но вы можете, если вы загрузите его через XMLHTTTREQUEST (AJAX). Таким образом, вы можете прервать связь, если это займет слишком долго.
Например, вы можете использовать Опция Timeout
Если вы используете jQuery:
$.ajax({ url: "a.js", dataType: "script", timeout: 1000});
таким образом, если сценарий не загружается в течение 1 секунды (1000 мс), запрос будет прерван. Также вы можете использовать {Async: false}
для предотвращения выполнения кода во время загрузки скрипта (если вам нужно).
Проверьте http://api.jquery.com/jquery.ajax/ для получения дополнительных вариантов.