2017-03-28 71 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/*", 

    ] 

    } 
]