Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Chrome Extension: How to remove content script after injection?

With a Google Chrome Extension: Is it possible to remove a content script after it has already been injected into the page?

There are no API methods for reloading content scripts (as far as I know), so I would like to re-inject the script and remove the old one, if possible.

like image 499
Azmisov Avatar asked Aug 28 '13 01:08

Azmisov


2 Answers

No. You can't "remove" it. Running a content script can have side effects, like declaring variables and functions on the window object, connecting to the background page, or listening to DOM events. If your content script has no side effects, it is identical to not being injected at all.

If you want to re-inject it, simply call executeScript with either a code or source parameter. It can be nice to simply define your injected scripts as functions, then calling .toString() on the functions, and injecting them as raw strings with the "code" argument to executeScript. Arguments to these functions can be inserted as JSON strings, which is even more convenient.

like image 67
kzahel Avatar answered Oct 13 '22 01:10

kzahel


I suppose if you dynamically load the content scripts it's possible to force a page refresh using javascript (window.location.reload()) this time not loading the content scripts

like image 39
ejectamenta Avatar answered Oct 13 '22 00:10

ejectamenta