2013-08-28 6 views
6

С расширением Google Chrome: возможно ли удалить скрипт контента после того, как он уже был введен на страницу?Расширение Chrome: как удалить скрипт контента после инъекции?

Нет методов API для перезагрузки сценариев контента (насколько я знаю), поэтому я хотел бы повторно вставить сценарий и удалить старый, если это возможно.

ответ

4

Нет. Вы не можете «удалить» его. Запуск сценария контента может иметь побочные эффекты, такие как объявление переменных и функций на объекте окна, подключение к фоновому рисунку или прослушивание событий DOM. Если ваш скрипт содержимого не имеет побочных эффектов, он идентичен тому, что он вообще не вводится.

Если вы хотите повторно вставить его, просто вызовите executeScript с кодом или исходным параметром. Может быть просто просто определить ваши введенные скрипты как функции, а затем вызвать функции .toString() для функций и вставить их как необработанные строки с аргументом «code» в executeScript. Аргументы этих функций могут быть вставлены как строки JSON, что еще более удобно.

+0

Я боялся, что был ответ; для меня немного больше работы, я думаю, – Azmisov

+1

Интересно, как это работает. Всякий раз, когда я вхожу в отладчик в сценарии содержимого, панель отображается как желтая, и я вижу [VM] в качестве источника скрипта. Интересно, что это повлечет за собой на самом деле реализовать что-то, что попытается удалить всех прослушивателей событий и любые другие побочные эффекты могут быть созданы скриптом контента. – kzahel

+0

Возможно, лучше написать сценарий содержимого, чтобы вы могли просто вызвать функцию для ее перезапуска. –

1

Я полагаю, что если вы динамически загружать скрипты содержания его можно принудительно обновить страницу с помощью JavaScript (window.location.reload()) на этот раз не загружая скрипты содержания

Смежные вопросы