Google chrome extension removeListenerв;铬扩展不工作
下面是background.js的内容:Google chrome extension removeListenerв;铬扩展不工作,google-chrome-extension,Google Chrome Extension,下面是background.js的内容: var toggle = false; chrome.browserAction.onClicked.addListener(function(tab) { toggle = !toggle; if(toggle) { var start_working = function() { chrome.tabs.query({ url: ["http://*/*","https://*/
var toggle = false;
chrome.browserAction.onClicked.addListener(function(tab) {
toggle = !toggle;
if(toggle) {
var start_working = function() {
chrome.tabs.query({ url: ["http://*/*","https://*/*"], currentWindow: true }, function (tabs) {
for (var i = 0; i < tabs.length; i++) {
chrome.tabs.executeScript(tabs[i].id, {code : "var enabled = 1;"});
chrome.tabs.executeScript(tabs[i].id, {file: 'js/new.js'});
chrome.browserAction.setIcon({path: "add48.png", tabId:tabs[i].id});
}
});
}
if (!chrome.tabs.onUpdated.hasListener(start_working)) {
chrome.tabs.onUpdated.addListener(start_working);
chrome.tabs.query({url: ["http://*/*","https://*/*"]}, function (tabs) {
console.log('1start_working='+chrome.tabs.onUpdated.hasListener(start_working));
console.log('1toggle='+toggle);
for (var i = 0; i < tabs.length; i++) {
chrome.tabs.executeScript(tabs[i].id, {code : "var enabled = 1;"});
chrome.tabs.executeScript(tabs[i].id, {file: 'js/new.js'});
chrome.browserAction.setIcon({path: "add48.png", tabId:tabs[i].id});
}
}
);
}
} else {
chrome.tabs.onUpdated.removeListener(start_working);
console.log('2start_working='+chrome.tabs.onUpdated.hasListener(start_working));
console.log('2toggle='+toggle);
chrome.tabs.query({url: ["http://*/*","https://*/*"], currentWindow: true }, function (tabs) {
for (var i = 0; i < tabs.length; i++) {
chrome.tabs.executeScript(tabs[i].id, {code : "var enabled = 0; $('#sort_g').remove();"});
chrome.browserAction.setIcon({path: "add48_off.png", tabId:tabs[i].id});
}
}
);
return false;
}
});
var-toggle=false;
chrome.browserAction.onClicked.addListener(函数(选项卡){
切换=!切换;
如果(切换){
var start_working=函数(){
chrome.tabs.query({url:[“http://*/*”,“https://*/*”],currentWindow:true},函数(tabs){
对于(var i=0;i
下面是manifest.json的代码:
{
"manifest_version": 2,
"name": "Ds",
"version": "0.2",
"background": {
"scripts": ["background.js"]
},
"icons": {
"48": "add48.png",
"128": "add128.png"
},
"browser_action": {
"default_icon": "add48_off.png"
},
"permissions": [
"tabs",
"notifications",
"*://*/*"
],
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["js/jquery-2.2.4.min.js"],
"run_at": "document_end",
"all_frames": true
}
],
"web_accessible_resources": ["tpl/panel.html"]
}
{
“清单版本”:2,
“名称”:“Ds”,
“版本”:“0.2”,
“背景”:{
“脚本”:[“background.js”]
},
“图标”:{
“48”:“add48.png”,
“128”:“add128.png”
},
“浏览器操作”:{
“默认图标”:“add48\u off.png”
},
“权限”:[
“标签”,
“通知”,
"*://*/*"
],
“内容脚本”:[
{
“匹配项”:[“”],
“js”:[“js/jquery-2.2.4.min.js”],
“运行时间”:“文件结束时间”,
“所有帧”:正确
}
],
“网络可访问资源”:[“tpl/panel.html”]
}
当我们单击应用程序图标时,我们会向所有HTML选项卡添加一个元素,并使图标处于“活动”状态,当我们再次单击图标时,我们会将图标更改为灰色,并从所有页面中删除HTML元素
此外,在更新html选项卡时,该元素应再次出现,并且扩展图标应处于活动状态
所有这些都已实现,但禁用扩展后,仍然会显示一个html元素,尽管new.js脚本不应连接并且chrome.tabs.onUpdate.hasListener(start_working)=false
以下是禁用扩展后的日志:
background.js:49 2start\u working=false
background.js:50 2toggle=false
但是无论如何更新选项卡时,html元素会出现在页面上
我不明白为什么会这样?此外,控制台显示,禁用扩展后,在更新页面时,new.js脚本已连接3次。您每次都在创建一个全新的
开始工作
函数,因此删除它不会产生任何效果,因为它从未注册过。您需要将函数移到全局范围。@wOxxOm问题解决了。非常感谢你!只是现在还不清楚为什么在更新选项卡后,脚本new.js会执行3次您每次都在创建一个全新的start\u working
函数,因此删除它不会有任何作用,因为它从未注册过。您需要将函数移到全局范围。@wOxxOm问题解决了。非常感谢你!只是还不清楚为什么在更新选项卡后会执行3次脚本new.js