2011-11-13 9 views
2

エクステンションを完成させるためにいくつかの最終的なコードを取得するのに少し問題があります。コンテンツスクリプトと通信するバックグラウンドページ

短いバージョンでは、別のタブが選択されたときにコンテンツスクリプトに通知するためにbackground.htmlページが必要です。現時点では、私は以下の持っている:

background.html

chrome.tabs.onSelectionChanged.addListener(function(tab_id , info) { 
    // some way to call App.resize(); 
}); 

コンテンツスクリプトのjsファイル

var App = { 
    resize: function() { 
     // logic 
    } 
} 

長いバージョンは私がのためにフルスクリーンの拡張を構築していますということですPC上でFirefoxやSafariと同じように動作するクロム。現時点では、フルスクリーンモードに入ると、ショートカットを使用して開いているすべてのタブを循環させない限り、別のタブに移動することはできません。私の拡張機能は現在開かれているすべてのタブを表示し、アドレスバーに切り替えて他のウェブサイトなどに移動することができます。

私は必要なすべての機能を備えています。他の人にリダイレクトされるページがあります。例えば。 Google Readerでは、記事をバックグラウンドで開くと、Googleのプロキシを経由して実際の記事にリダイレクトされます。これは動作しない唯一の場所です。しかし、私が新しいタブに切り替えるたびにApp.resize()関数を呼び出すことができれば、それは私の問題を解決します。 (私は願います)。

+0

誰も助けることができますか? –

答えて

7

すべてのページまたは選択したタブのコンテンツスクリプトに通知する必要があるかどうかによって異なります。私はあなたに両方のソリューションを提供します。

background.html(あなたはすべてのタブに通知する必要がある場合)

chrome.tabs.onSelectionChanged.addListener(function() { 
    chrome.windows.getAll({populate: true}, function(windows) { 
     var w,t; 
     for (w=0; w<windows.length; w++) { 
     for (t=0; t<windows[w].tabs.length; t++) { 
      chrome.tabs.sendRequest(windows[w].tabs[t].id, "resize"); 
     } 
     } 
    }); 
}); 

background.html

chrome.tabs.onSelectionChanged.addListener(function(tabId) { 
    chrome.tabs.sendRequest(tabId, "resize"); 
}); 

(あなただけの新たに選択したタブに通知する必要がある場合) コンテンツスクリプト

+0

ありがとうございました:)それはとても役に立ちます –

関連する問題