2017-04-26 58 views
0

我遇到了很多麻煩與Chrome瀏覽器擴展,即時通訊試圖關閉不包含某一類的所有打開的標籤。的Chrome擴展程序關閉所有標籤沒有一定的格

這是什麼,我試圖做的總體思路,還有一部分是僞代碼。

//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

我假設你的第二個片段是從內容腳本。

在這種情況下,它是作爲window.close()那麼簡單,因爲你在該選項卡的上下文是。無需Chrome API。

0

試試這個:

//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 
    } 
    }); 
}); 

你並不需要爲一個單獨的內容腳本。