10

現在のURLに基​​づいてポップアップウィンドウのコンテンツを動的に変更するChrome拡張機能を作成しています。

私はbackground.jsで次のようなことをしています。これは正常に機能します。

if(domains.contains(request.url)){
    chrome.browserAction.setPopup({
        popup: "tracking.html"
    });
}else{
    chrome.browserAction.setPopup({
        popup: "nottracking.html"
    });
}

問題は、タブを切り替えても、ポップアップの内容がタブ間で同じままになることです。これに対処するための正しい戦略は何ですか?

  • どういうわけか(そのような可能性が存在する場合)タブ変更イベントにフックしますか?
  • ポップアップコンテンツの変更を現在のタブに制限しますか?tabId( chrome.browserAction.setPopupにオプションのパラメーターがあることに気づきましたが、ドキュメントは少し不足しています)
  • 他に何かありますか?

すべてが非常に感謝しています!

4

3 に答える 3

11

オプション1、イベントリスナーをバインドします。

chrome.tabs.onUpdatedURIの変更をリッスンするために使用し、その後に指定を使用しchrome.browserAction.setPopupて、指定tabIdされたタブのポップアップを設定します。例えば:

chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
    if (domains.contains(tab.url)) {
        chrome.browserAction.setPopup({
            tabId: tabId,
            popup: 'tracking.html'
        });
    } else {
        chrome.browserAction.setPopup({
            tabId: tabId,
            popup: 'nottracking.html'
        });
    }
});
于 2012-04-09T09:35:51.380 に答える
3

TabIdをsetPopup呼び出しに渡すだけです。http://code.google.com/chrome/extensions/browserAction.html

私はいつもバックグラウンドページでこれを行っています:

chrome.browserAction.setPopup({"tabId":data.tabId,"popup":url});

チャームのように機能します。

于 2012-07-19T05:46:05.000 に答える
0

パラメータのsetpopupオブジェクトが値をサポートするようになりましたtabId 最初に現在のタブの数値IDを取得する必要があります。これには追加の権限は必要ありません。

chrome.tabs.query({currentWindow: true, active: true}, function(tabs){
    var url = domains.contains(request.url) ? "tracking.html" : "nottracking.html";
    chrome.browserAction.setPopup({
       popup: url,
       tabId: tabs[0].id
    });
});
于 2013-07-12T22:46:23.017 に答える