2013-01-06 53 views
0

我正在爲reddit.com構建Chrome擴展,因此我正在使用page action。現在我想page_action icon只爲特定的URL格式是可見的,即針對特定網址的隱藏頁面操作

http://www.reddit.com [allowed] 
http://www.reddit.com/r/* [allowed] 
http://www.reddit.com/r/books/comments/* [not allowed] 

所以,正如我上面提到的,我不希望我的擴展頁面操作圖標是涉及comments url of redddit3rd case可見。

目前我使用下面的代碼在我background.js來實現這一目標:

function check(tab_id, data, tab){ 
    if(tab.url.indexOf("reddit.com") > -1 && tab.url.indexOf("/comments/") == -1){ 
     chrome.pageAction.show(tab_id); 
    } 
}; 
chrome.tabs.onUpdated.addListener(check); 

我還增加了以下線在我manifest.json禁用評論頁面

"exclude_matches": ["http://www.reddit.com/r/*/comments/*"], 

上延伸所以,我的問題是這是禁用&隱藏特定頁面/網址的擴展的正確/理想方式?

回答

1

爲什麼不是Zoidb-我的意思是,正則表達式?

var displayPageAction = function (tabId, changeInfo, tab) { 
    var regex = new RegExp(/.../); //Your regex goes here 
    var match = regex.exec(tab.url); 
    // We only display the Page Action if we are inside a tab that matches 
    if(match && changeInfo.status == 'complete') { 
     chrome.pageAction.show(tabId); 
    } 
}; 

chrome.tabs.onUpdated.addListener(displayPageAction); 

關於該方法,我認爲使用onUpdated.addListener是正確的方法。作爲一種良好的做法,除非您的應用程序需求另有指定,否則嘗試僅在加載選項卡時才顯示您的頁面操作。

您可以使用this tool來生成正則表達式,如果您需要幫助,請隨時再次提問,我們將幫助您組裝正確的正則表達式。