禁用页面上的所有javascript事件
我正在尝试编写一个chrome扩展,该扩展将禁用所有元素的事件侦听器(鼠标悬停,单击…)。我没有尝试重写noscript,这只是我需要的一个设置步骤 我已经尝试了禁用页面上的所有javascript事件,javascript,google-chrome,Javascript,Google Chrome,我正在尝试编写一个chrome扩展,该扩展将禁用所有元素的事件侦听器(鼠标悬停,单击…)。我没有尝试重写noscript,这只是我需要的一个设置步骤 我已经尝试了$(“body*).unbind()和.unbind(“鼠标点击”)和.off()和.off(“鼠标点击”) 没有一个奏效 我做错了什么 PS:也可以禁用页面上运行的所有javascript代码(来自页面本身),只允许我的扩展注入代码.如果您有jQuery生成的事件,它会保留您可以解析的数据。您可以看到,作为一种更通用的解决方案(即,在
$(“body*).unbind()
和.unbind(“鼠标点击”)
和.off()
和.off(“鼠标点击”)
没有一个奏效
我做错了什么
PS:也可以禁用页面上运行的所有javascript代码(来自页面本身),只允许我的扩展注入代码.如果您有jQuery生成的事件,它会保留您可以解析的数据。您可以看到,作为一种更通用的解决方案(即,在Chrome扩展之外),优秀者是如何做到这一点的。这不是一个完整的示例,因为我不会为您完成所有的工作,但可能会引导您朝着正确的方向前进:
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
}
}
函数preventAll(){
var dom=document.getElementsByTagName('*');
var km=['click','dblclick','mousedown','mousemove','mouseover','mouseout','mouseup','mouseenter','mouseleave','keydown','keypress','keypup'];
对于(var i=0,l=dom.length;iYou无法使用jQuery事件处理禁用JavaScript事件侦听器…它们是两个完全不同的东西。我相信页面上的侦听器也是使用jQuery创建的。但是我想删除所有事件侦听器。它似乎如您所期望的那样工作…您确定事件不会在代码之后绑定吗?以及此时,您的代码是否正在实际运行?标准的.removeEventListener
采用函数侦听器类型(单击)和侦听事件的原始函数。如果这两个函数都不可用,则无法删除纯文本中设置的事件javascript@Ian:由于我正在编写扩展,我可以选择何时执行代码(当我点击扩展图标时)所以我的代码应该在之后运行。我很确定它正在运行:)谢谢!但是什么是框架呢?frame
是一个frame
或iframe
。要查看DOM事件的完整列表,请查看这里。还有很多。另外,在处理表单
对象时,您需要循环该对象和元素
对象,这是每个表单
属性的属性。就像我说的,我会帮你的,但我不会帮你的。祝你好运!