我正在尝试编写一个chrome扩展,禁用所有元素的事件侦听器(mouseover,click,...)我不是要重写noscript,这只是我需要的设置步骤。
我尝试了$("body *).unbind()
和.unbind("mouseover click")
以及.off()
和.off("mouseover click")
没人工作。
我做错了什么?
PS:在页面上运行禁用所有javascript代码(来自页面本身)并且只允许我的扩展注入代码
也没关系答案 0 :(得分:2)
这不是一个完整的例子,因为我不会为你做所有的工作,但可能会引导你朝着正确的方向前进:
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
}
}
答案 1 :(得分:1)
It's not possible to intercept or list all previously-chained events in Javascript。但是,它确实看起来像Chrome插件(与一般的DOM相反)have an API for manipulating how Javascript works。
答案 2 :(得分:1)
如果你说jQuery所做的事件,它会保留你可以解析的数据。您可以看到优秀的Visual Events如何做到这一点,作为一种更通用的解决方案(即在Chrome扩展程序之外)。