Правильно, но я спрашиваю: а что, если у меня есть контроль над first.js, а не second.js?
емного странный случай, но у меня есть свои причины:
Я хотел бы иметь возможность написать
<script type="text/javascript" src="first.js"></script>
<script type="text/javascript" src="second.js"></script>
в моей разметке и, используя код вfirst.js
предотвратить или задержать исполнениеsecond.js
, Это возможно в любом браузере? Что делать, если содержимоеfirst.js
встроены? (Если это поможет, предположим, что второй тег сценария имеетid
атрибутов.)
Поскольку я получил пару ответов, в которых не было того, к чему я клоню, я должен уточнить:
Решение должно быть полностью внутриfirst.js
, Все, что требует изменения исходного HTML-кода страницы илиsecond.js
не допускается.Этоявляется приемлемо для загрузкиsecond.js
через Ajax и выполнить его с помощьюeval
, Это легкая часть. Трудной частью является предотвращение немедленного исполненияsecond.js
.Предположим, что выне знаю Что вsecond.js
, Таким образом, вы не можете просто заменить каждую глобальную функцию, вызываемуюsecond.js
с неоперативной функцией. (Кроме того, это почти наверняка приведет к ошибкам.)Если вы знаете решение, которое работает в некоторых браузерах, но не в других, я бы хотел услышать его.
пример: Чтобы сделать это немного более конкретным, скажем, что код
<script type="text/javascript">
function func() {
window.meaningOfLife = 42;
window.loadSecond();
};
setTimeout(func, 10);
</script>
предшествует двумscript
включает в себя, и чтоsecond.js
содержит строку
if (window.meaningOfLife !== 42) {throw new Error();}
first.js
должен быть в состоянии предотвратить эту ошибку, задерживаяsecond.js
от выполнения доwindow.loadSecond
это запустить. (Предположим, что реализацияwindow.loadSecond
также вfirst.js
.) Этоне разрешено трогатьwindow.meaningOfLife
.
Обновить: Ответ Алохчи отвечает этим требованиям, но только при условии, что появится второй тег сценариянемедленно после первого, с пустым пространством между ними. Если бы кто-то мог продлить свой взлом, чтобы избежать этого требования, не представляя других нежелательных последствий, это было бы удивительно ...