Я разрабатываю приложение 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 ();
Итак, я подумал о простом решении: ДО определения функции ie; function a1 () {..}, я хочу создать a1 как функцию CONSTANT, которая ничего не делает, поэтому делает вызов a1 () бесполезным.
Проблема в том, что если я определю функцию, которая будет постоянной в моем js, который запускает document_start, среда выполнения будет другой, поэтому она не повлияет на страницу.
Таким образом, альтернатива для запуска в той же среде выполнения - это INJECT код, использующий innerHTML + = "..."
Другой альтернативой является создание элемента script с использованием «createElement», а src - это внешний js-файл, который необходимо загрузить перед выполнением.
Обе альтернативы не работают, поскольку дерево разбора не создается в сценарии run_at document_start.
Итак, я подумал о другом решении. Я добавил слушателей для события DOMModifySubTree, надеясь изменить последовательность разбора (я знаю, это звучит забавно :)), чтобы функция не вызывалась. Не помогает.
Итак, мой вопрос: как мне предотвратить вызов функции a1 () ??
P.S. - Я не могу связаться со сторонним разработчиком веб-сайта.