需要帮助切换谷歌浏览器扩展webRequest监听器

时间:2015-05-03 00:03:08

标签: javascript google-chrome google-chrome-extension webrequest

嘿,伙计我是制作Google Chrome扩展程序的新手。我决定做的第一个扩展是一个简单的网站拦截器。我在这里找到了一些来自某人的答案的代码,可以根据tab.id来切换webRequest监听器,如下所示:

Items.find_each { |item| item.update_attribute(:value, item.value * 1.1) }

这适用于每个标签,但是我想切换所有标签的监听器。 我希望它如何工作:

  • 点击分机图标
  • 阻止我用户中的所有网址'数组,无论我是否切换标签
  • 无论选项卡是否与我最初启用扩展程序的选项卡不同,都可以再次单击图标以禁用。

我已多次尝试重新创建此方法,但是一旦启用它就无法删除它。因为我的实现总是调用匿名函数,而且根据我所读过的内容,你不能删除回调函数是匿名的监听器。

以下是我自己尝试的一些基本实现:

chrome.browserAction.onClicked.addListener(function(tab) {
if (listeners[tab.id]) { //If the ID already exists
    chrome.webRequest.onBeforeRequest.removeListener(listeners[tab.id]);
    delete listeners[tab.id];
    chrome.browserAction.setBadgeText({
        text: 'OFF',
        tabId: tab.id
    });
} else {
    listeners[tab.id] = function(details) {
        return {cancel: true};
    };
    chrome.webRequest.onBeforeRequest.addListener(listeners[tab.id], {
        urls: user,
        types: ['main_frame', 'sub_frame'],
        tabId: tab.id
    }, ['blocking']);
    // Show indicator to show that the extension is active.
    chrome.browserAction.setBadgeText({
        text: 'ON',
        tabId: tab.id
    });
}
});

基本上我想帮助将第一个代码段转换为适用于所有选项卡的代码段。谢谢! :)

0 个答案:

没有答案