2017-04-26 56 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 
    } 
    }); 
}); 

你并不需要为一个单独的内容脚本。