Я разрабатываю приложение Chrome на стороннем веб-сайте.
Документ, который я пытаюсь изменить, имеет следующий формат страницы:
<head>
.
.meta data here
.
</head>
<body>
<script type="text/javascript">
function a1(){
..contents of function a1
}
</script>
.
.other contents of body
.
<script type="text/javascript">
a1(); // <-- I don't want this to be executed
</script>
</body>
Моя проблема в том, что я хочу загрузить всю страницу, кроме вызова функции a1();
Поэтому я подумал о простом решении: ПЕРЕД определением функции, т.е. function a1(){..}, я хочу создать a1 как ПОСТОЯННУЮ функцию, которая ничего не делает, поэтому вызов a1() становится бесполезным.
Проблема в том, что если я определю функцию как постоянную в моем js, который запускается_в document_start, среда выполнения будет другой, поэтому она не повлияет на страницу.
Таким образом, альтернативой для запуска в той же среде выполнения является ВНЕДРЕНИЕ кода с использованием innerHTML+=" ... "
Другой альтернативой является создание элемента сценария с использованием «createElement», а src — это внешний файл js, который необходимо загрузить перед выполнением.
Обе альтернативы не работают, так как дерево синтаксического анализа не создается в сценарии run_at document_start.
Итак, я подумал о другом решении. Я добавил слушателей для события DOMModifySubTree, надеясь изменить последовательность синтаксического анализа (я знаю, это звучит забавно :)), чтобы функция не вызывалась. Не помогает.
Итак, мой вопрос: как предотвратить вызов функции a1() ?? P.S. Я не могу связаться со сторонним разработчиком веб-сайта.