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]

所以,正如我上面提到的,我不希望我的扩展页面操作图标对3rd case涉及的comments url of redddit.

目前我正在使用下面的代码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/*"],

所以,我的问题是这是禁用和隐藏特定页面/网址的扩展的正确/理想方式吗?

4

1 回答 1

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是正确的方法。作为一种好的做法,尝试仅在加载选项卡时显示您的页面操作,除非您的应用程序要求另有说明。

您可以使用这个工具来生成您的正则表达式,如果您需要帮助,请随时再次询问,我们将帮助您组装您需要的正则表达式。

于 2013-01-06T18:23:07.477 回答