の効果を模倣したいのですwindow.location.reload()
が、コンテンツ スクリプトが実行されている「隔離された世界」に対してのみです。つまり、既存のすべての JS、特にコールバックとイベント バインディングを削除します。これを行う良い方法はありますか?
注:chrome.runtime.reload()
これでは機能しません。拡張機能とバックグラウンド スクリプトを再読み込みする効果がありますが、ユーザーが更新するまで既存のコンテンツ スクリプトを再読み込みしません。
の効果を模倣したいのですwindow.location.reload()
が、コンテンツ スクリプトが実行されている「隔離された世界」に対してのみです。つまり、既存のすべての JS、特にコールバックとイベント バインディングを削除します。これを行う良い方法はありますか?
注:chrome.runtime.reload()
これでは機能しません。拡張機能とバックグラウンド スクリプトを再読み込みする効果がありますが、ユーザーが更新するまで既存のコンテンツ スクリプトを再読み込みしません。
私が知る限り、たとえば拡張機能の更新中に、コンテンツ スクリプトを自動的に再挿入する方法はありません。できることは、URL が必要なパターンに一致するすべてのタブを見つけ、プログラムを使用してコンテンツ スクリプトを再挿入することchrome.tabs.executeScript
です。
このメソッドでは、コンテンツ スクリプトで使用されるものと同じ URL パターンのアクセス許可を追加する必要があることに注意してください。
マニフェスト.json:
"content_scripts":
[
{
"matches": [ "http://*.google.com/*" ],
"js": [ "content_script.js" ]
}
],
"permissions":
[
"tabs", "http://*.google.com/*"
]
Background.js:
chrome.runtime.reload();
chrome.tabs.query({ url: "http://*.google.com/*" }, function(tabs)
{
for(var i = 0; i < tabs.length; i++)
{
chrome.tabs.executeScript(tabs[i].id, { file: "content_script.js" }, function() {});
}
});