我正在调用以下方法来设置然后从我的Google Chrome扩展程序的内容脚本中删除DOM元素上的input
事件侦听器:
//From the global scope
gl = {
setEventIfNotDoneAlready: function(elmt)
{
if(elmt.doneAlready)
return true;
if(!elmt.myEventSet)
{
elmt.addEventListener('input', gl.onMyInputEvent, true);
elmt.myEventSet = true;
}
return false;
},
onMyInputEvent: function(elmt)
{
elmt.target.doneAlready = true;
elmt.target.removeEventListener('input', gl.onMyInputEvent, true);
console.log(">>Input fired!");
}
};
然后调用上面的方法:
var objAll = document.getElementsByTagName("*");
for(var i = 0; i < objAll.length; i++)
{
if(objAll[i].isContentEditable)
{
if(gl.setEventIfNotDoneAlready(objAll[i]))
{
//And so on...
}
}
}
我需要指出的是,上面的代码会被注入Chrome浏览器用户导航到的任意页面。 (这是通过Chrome扩展程序完成的。)
这种方法似乎在大多数页面上都能正常工作,除了在某些情况下removeEventListener
没有做任何事情,我的onMyInputEvent
继续被调用,就好像什么也没做。
知道为什么吗?