11

の効果を模倣したいのですwindow.location.reload()が、コンテンツ スクリプトが実行されている「隔離された世界」に対してのみです。つまり、既存のすべての JS、特にコールバックとイベント バインディングを削除します。これを行う良い方法はありますか?

注:chrome.runtime.reload()これでは機能しません。拡張機能とバックグラウンド スクリプトを再読み込みする効果がありますが、ユーザーが更新するまで既存のコンテンツ スクリプトを再読み込みしません。

4

1 に答える 1

7

私が知る限り、たとえば拡張機能の更新中に、コンテンツ スクリプトを自動的に再挿入する方法はありません。できることは、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() {});
    }
});
于 2013-10-14T08:55:50.243 に答える