嘿,伙计我是制作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
});
}
});
基本上我想帮助将第一个代码段转换为适用于所有选项卡的代码段。谢谢! :)