2011-06-27 8 views
1

私の拡張機能は、pageActionボタンをクリックしてJavaScriptをHTMLドキュメントに挿入します。拡張機能をインストールする前にロードされたタブでexecuteScriptを動作させるにはどうすればよいですか?

これは、拡張機能がインストールされた後でユーザーがページに移動したときに問題なく動作します。

拡張機能が初めてインストールされたとき、私はpageActionボタンを表示してクリックを聞くことができますが、executeScript呼び出しは暗黙的に失敗します。

executeScript関数には、拡張機能のインストール前に読み込まれたタブの権限がないように見えます。

この問題を回避する方法はありますか?

+0

おそらく、プログラムですべてのタブを更新するだけではありません。 – serg

答えて

1

私はReload All Tabs拡張で全く同じ問題を抱えていました。基本的に、拡張機能が最初にインストールされると、ユーザーはタブを再読み込みするまで拡張機能を使用できません。ご存知のように、ユーザーのタブを自動的に再読み込みするのは悪いユーザーエクスペリエンスです。私はexecuteScriptを使ってしまいました。なぜなら、それは本当にユーザーには見えないからです。あなたはGitHubのに位置するソースコードを見ることができます:

https://github.com/mohamedmansour/reload-all-tabs-extension/blob/master/js/reload_controller.js#L96

それは最初にインストールしたときに基本的に私は拡張子を準備するために、この質問からインストールをターゲットにアプローチを使用Detect Chrome extension first run/updatechrome.windows.getAllを使用し、chrome.tabs.getAllInWindow、およびchrome.tabs.executeScript

chrome.windows.getAll({ populate: true }, function(windows) { 
    for (var w = 0; w < windows.length; w++) { 
    var tabs = windows[w].tabs; 
    for (var t = 0; t < tabs.length; t++) { 
     var tab = tabs[t]; 
     // Only inject in web pages. 
     if (tab.url.indexOf('http') == 0) { 
     chrome.tabs.executeScript(tab.id, { file: 'content_script.js', allFrames: true }); 
     } 
    } 
    } 
}); 

executeScriptが動作しない場合は、http://crbug.com/newでバグを報告し、開発者はそれを見ることができますしてください。私の場合、それはうまく動作します。

希望に役立ちます!

+0

現在のバージョンで動作するようにコードを更新しました。もう一度試してみました。 –

関連する問題