Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google chrome extension removeListenerв;铬扩展不工作_Google Chrome Extension - Fatal编程技术网

Google chrome extension removeListenerв;铬扩展不工作

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://*/

下面是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://*/*"], 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