我正在尝试编写一个chrome扩展,它禁用所有元素的事件侦听器(mouseover,单击,.)我不是试图重写noscript,这只是一个设置步骤,我需要。
我试过$("body *).unbind()和.unbind("mouseover click"),.off()和.off("mouseover click")都没用。
我做错什么了?
PS:也可以只在页面上禁用所有javascript代码(来自页面本身),并且只允许我的扩展注入代码。
发布于 2013-11-20 01:28:20
这不是一个完整的例子,因为我不会为你做所有的工作,但可能会引导你朝着正确的方向前进:
function preventAll(){
var dom = document.getElementsByTagName('*');
var km = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseover', 'mouseout', 'mouseup', 'mouseenter', 'mouseleave', 'keydown', 'keypress', 'keyup'];
for(var i=0,l=dom.length; i<l; i++){
for(var n=0,c=km.length; n<c; n++){
dom[i]['on'+km[n]] = function(e){
e = e || event;
e.preventDefault();
return false;
}
}
}
var fr = frames;
for(var i=0,l=fr.length; i<l; i++){
// cancell frames events here
}
}发布于 2013-11-20 01:04:34
不可能在Javascript中截获或列出所有以前链接过的事件。。然而,它看起来确实很像Chrome插件(与一般的DOM不同) 具有操纵Javascript工作方式的API。。
发布于 2013-11-20 01:08:34
如果像您所说的那样,jQuery创建了一些事件,那么它将保留您可以解析的数据。您可以看到优秀的视觉事件是如何做到这一点的,它是一种更通用的解决方案(即Chrome扩展之外的解决方案)。
https://stackoverflow.com/questions/20085316
复制相似问题