Расширение Chrome: как удалить скрипт содержимого после инъекции?

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

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


person Azmisov    schedule 28.08.2013    source источник


Ответы (2)


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

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

person kzahel    schedule 28.08.2013
comment
Я боялся, что это был ответ; просто немного больше работы для меня, я думаю - person Azmisov; 28.08.2013
comment
Интересно, как это работает. Всякий раз, когда я вхожу в отладчик в сценарии контента, панель отображается желтой, и я вижу [VM] в качестве источника сценария. Интересно, что повлечет за собой фактическая реализация чего-то, что попытается удалить все прослушиватели событий и любые другие побочные эффекты, которые могли быть созданы сценарием содержимого. - person kzahel; 28.08.2013
comment
Может быть, лучше написать сценарий содержимого, чтобы вы могли просто вызвать функцию для его перезапуска. - person e-motiv; 25.02.2018

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

person ejectamenta    schedule 29.03.2015