2017-04-26 3 views
0

Chrome拡張機能に問題があります。特定のクラスを含まない開いているタブをすべて閉じようとしています。Chrome拡張機能で特定のdivを除いたすべてのタブを閉じる

これは私がやろうとしていることの一般的な考え方ですが、その中には擬似コードがあります。

//background.js 
chrome.browserAction.onClicked.addListener(function (tab) { 
    chrome.tabs.query(function(tabs) { 
    chrome.tabs.sendMessage(tabs, {"message": "clicked_browser_action"}); 
    }); 
}); 

chrome.runtime.onMessage.addListener(
    function(request, sender, sendResponse) { 
     if(request.message === "clicked_browser_action") { 
      for (var i = 0; i < request.length; i++) { 
       var existsClass = request[i].getElementByClass("someClass"); 
       if (existClass === null) { 
        //TODO Close tab 
       } 
      } 
     } 
    } 
); 

ご意見やご感想をお寄せください。

ありがとうございます!

答えて

1

私はあなたの2番目のスニペットがコンテンツスクリプトから来たと仮定しています。

その場合は、そのタブのコンテキストにあるので、window.close()というように簡単です。 Chrome APIは不要です。あなたはそのために別々のコンテンツスクリプトを必要としない

//background.js 
chrome.browserAction.onClicked.addListener(function() { //when the extension's icon is pressed 
    chrome.tabs.query({},function(tabs) { // get all tabs 
    for (var i = tabs.length; i--;){  // loop through all tabs 
     chrome.tabs.executeScript(tabs[i].id,{code: //execute this code in each tab 
     "if (!document.querySelector(\".someClass\")) close();"}); 
     //^if no element is found with the selected class, close the tab 
    } 
    }); 
}); 

0

はこれを試してみてください。

関連する問題