2013-08-28 10 views
6

Google Chrome拡張機能を使用する:コンテンツスクリプトが既にページに挿入された後に削除することはできますか?Chrome拡張機能:注入後にコンテンツスクリプトを削除するにはどうすればよいですか?

(私が知る限り)コンテンツスクリプトをリロードするAPIメソッドはありませんので、スクリプトを再注入し、可能であれば古いスクリプトを削除します。

答えて

4

番号「削除」できません。コンテンツスクリプトを実行すると、ウィンドウオブジェクトの変数や関数の宣言、バックグラウンドページへの接続、DOMイベントのリスニングなどの副作用が発生する可能性があります。コンテンツスクリプトに副作用がない場合は、全く注入されていないことと同じです。

再注入する場合は、コードまたはソースパラメータのいずれかを使用してexecuteScriptを呼び出すだけです。単純に関数として注入されたスクリプトを定義し、その関数に対して.toString()を呼び出し、それらを実行スクリプトの "code"引数で生の文字列として注入するといいでしょう。これらの関数の引数はJSON文字列として挿入できます。これはさらに便利です。

+0

コンテンツスクリプトをロードしていないあなたは、動的コンテンツのスクリプトをロードする場合、()window.location.reload()はJavaScriptを使用して、ページの更新を強制することが可能ですと仮定。私のためにちょうどもう少し仕事、私は推測する – Azmisov

+1

それはどのように動作するのは面白いです。コンテンツスクリプトにデバッガを入力するたびに、ペインが黄色で表示され、スクリプトソースとして[VM]が表示されます。すべてのイベントリスナーを削除しようとするコンテンツや、コンテンツスクリプトによって作成されたその他の副作用を実際に実装するためには、何が必要なのだろうか。 – kzahel

+0

コンテンツスクリプトを作成して、それを再起動する関数を呼び出すことができます。 –

1

私は、私はそれが答えだった恐れていたこの時間は

関連する問題