2017-03-28 29 views
0

我的manifest.json包含此块:事件处理程序,网站不匹配的manifest.json“匹配”

"content_scripts": [ 
    { 
     "all_frames": true, 
     "matches": [ 
      "*://www.google.com/*", 
      "*://www.cnn.com/*", 
      "*://*.foxnews.com/*" 
     ], 
     "js": ["js/main.js"] 
     } 
    ], 

我需要一个触发事件,(在我的内容JS或background.js,没有按无论何时,当用户访问一个网站时,不是与我的matches设置中的一个网站相匹配。

它是如何完成的?

回答

0

在您的background.js中,您可以为制表符加载添加一个侦听器。在这里,您可以获取当前选项卡的URL并与列表匹配。

chrome.tabs.onUpdated.addListener(function(tabId, info, tab) { 
    if (info.status == "complete") { 
     var url = tab.url.replace(/.*?:\/\//g, "").replace(/\/$/, ""); //removes the protocol 

     var allowedURLS = ["www.google.com", "www.cnn.com", "foxnews.com"]; 

     for(var i in allowedURLs) { 
      if(allowedURLs[i].indexOf(url) == -1) { 
       //URL does not match 

       break; 
      } 
     } 
    } 
}); 
0

您需要使用exclude_matches在您的内容脚本,这表示,其下的脚本将不会注入。

从谷歌documentation:这个脚本的内容,否则将注入

排除页面。有关如何排除URL的信息,请参阅匹配模式了解有关这些字符串的语法以及匹配模式和globs的更多详细信息。

对于您的情况:

"content_scripts": [ 
{ 
    "all_frames": true, 
    "matches": ["<all_urls>"], 
    "js": ["js/main.js"], 
    "exclude_matches": [ 
     "*://www.google.com/*", 
     "*://www.cnn.com/*", 
     "*://*.foxnews.com/*", 

    ] 

    } 
]