Javascript 到处都不允许.preventDefault()
我正在尝试编写一个用户脚本来全局阻止所有Javascript 到处都不允许.preventDefault(),javascript,dom-events,userscripts,preventdefault,Javascript,Dom Events,Userscripts,Preventdefault,我正在尝试编写一个用户脚本来全局阻止所有.preventDeault()键盘事件调用,并使用我自己的热键,而不是被迫使用不同网站定义的热键。问题是我不知道如何在不查看具体网站代码的情况下解除绑定这样的东西。我不想阻止所有的JS——只是应该由我来控制的东西,而不是开发人员——但我不知道如何使其变得简单和全局。禁用网站代码中的默认功能可能会使该网站不稳定,甚至无法使用 您可以在KeyboardEvent上创建对preventDefault的覆盖(这是UIEvent的子类,它是Event的子类,其中实
.preventDeault()
键盘事件调用,并使用我自己的热键,而不是被迫使用不同网站定义的热键。问题是我不知道如何在不查看具体网站代码的情况下解除绑定这样的东西。我不想阻止所有的JS——只是应该由我来控制的东西,而不是开发人员——但我不知道如何使其变得简单和全局。禁用网站代码中的默认功能可能会使该网站不稳定,甚至无法使用
您可以在KeyboardEvent
上创建对preventDefault
的覆盖(这是UIEvent
的子类,它是Event
的子类,其中实现了标准的preventDefault
),如下所示:
KeyboardEvent.prototype.preventDefault = function() { };
(事件上的可写
、可枚举
和可配置
标志预防默认
都是真
,因此这里不需要对象。定义属性
)
例如:
KeyboardEvent.prototype.preventDefault=function(){};
//这个事件处理程序*应该*阻止输入,但不会,因为我们已经破坏了默认设置
document.getElementById(“输入”).addEventListener(“键控”,函数(e){
e、 预防默认值();
},假)代码>
您可以尝试更改Event.prototype.preventDefault
。这正是我需要的。非常感谢。顺便说一句,现在大多数网站对我来说都是不可用的,因为许多开发者为了无用的效果和功能而阻止了他们不应该阻止的事情。作为一个功能强大的用户,拥有功能强大的浏览器和类似vim的热键,我认为,重新定义网站自己的热键只是一种粗鲁,因为它迫使用户适应开发者的想法,而不是使用用户在浏览器中拥有的东西。就像每个网站都认为自己就是我的整个世界一样。