我是编程和Chrome扩展程序的新手。我无法从我的Google扩展程序中的内容脚本中删除事件侦听器。 AddeventListener正在运行并调用myFunc。 myFunc也被调用removeEventListener 这可能是一个微不足道的问题,但我无法弄明白。提前感谢您的帮助。
testScript.js:
chrome.storage.sync.get('isOn',function(data) {
var isOn =data.isOn;
console.log('TESTSCRIPT:ACTIVATED, isOn: ' +isOn);
if(isOn){
console.log('add Event Listener');
document.addEventListener('mouseup',myFunc);
}
else{
console.log('remove Event Listener');
document.removeEventListener('mouseup',myFunc);
}
});
function myFunc(){
console.log('my func activated');
}
Background.js:
chrome.browserAction.onClicked.addListener(function (tab) {
chrome.storage.sync.get('isOn',function(data){
var isOn =data.isOn;
console.log('value of isOn' ,isOn);
if (isOn){
chrome.storage.sync.set({'isOn' : false},function() {
console.log('The isOn is set to false.');
chrome.browserAction.setIcon({path: 'boy_off.png'});
});
}
else{
chrome.storage.sync.set({'isOn' : true},function() {
chrome.browserAction.setIcon({path: 'boy.png'});
});
}
chrome.tabs.executeScript(null,{
file:'testScript.js'
});
});
});
的manifest.json
{
"manifest_version":1,
"name":"MyGC",
"description":"This is chrome Extension",
"version":"1.0",
"browser_action":{
"default_icon":"boy_off.png"
},
"background":{
"scripts":["background.js"]
},
"permissions":[
"activeTab",
"tabs",
"http://*/*",
"https://*/*",
],
}
答案 0 :(得分:0)
函数是一个对象。每次在文档上执行脚本时,它都会将myFunc重新定义为新函数。在上一次执行中,这个新函数与旧函数不同。因此,removeEventListener(... myFunc)无法工作。
使其工作的一种方法是执行一次内容脚本,并从background.js向其发送消息,以便内容脚本仍具有myFunc值。
我没有尝试的另一种方法:在内容脚本中只定义一次myFunc。然后运行您希望调用它的另一个内容脚本多次,但不要再次定义它。