2011-10-28 15 views
3

Chrome拡張機能では、特定のタブの変更のみをリッスンします。 chrome.tabs.onUpdated.addListenerメソッドを使用すると、これはすべてのタブで実行されることがわかりました。私はextTabIdのリスナーを追加するようにこれを行うChrome拡張機能の1つのタブにのみイベントリスナーを追加します。

var extTabId = 10; // captured when this tab is created 

chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) { 
    if (tabId !== extTabId) { 
     return false; 
    } 

    // do whatever else I need this specific tab in question to do 
}); 

もっと簡単な方法があります:私は、私が興味タブのIDをキャプチャして、最初、そのようにことを確認する方法を実装しました?

答えて

4

簡単な解決策はありません。あなたのアプローチは道のりです。

0

アクティブなタブの場合にのみ、onUpdatedイベントのリスナーを追加したい場合は、こちらを参考にしてください。

chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) { 

    chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) { 
     if (tabs[0].id === tabId) { 
      if (changeInfo && changeInfo.status === 'complete') { 
       chrome.tabs.sendMessage(tabs[0].id, { data: tab }); 
      } 
     } 
     else { 
      return false; 
     } 
    }); 
}); 
+0

これは、技術的にはすべてのタブにリスナーを追加します。ここの唯一のことは、currentWindowからのアクティブなタブ以外は何もしないことです。しかし、リスナーはまだそこにあり、発砲し、すべてのタブのクエリを実行しています。 OPsソリューションに似ています。これを実際に見るには、上記の2行目のコードとして 'console.log'行を追加してください。 –

関連する問題