禁止.preventDefault()无处不在
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了禁止.preventDefault()无处不在相关的知识,希望对你有一定的参考价值。
我正在尝试编写一个用户脚本来阻止所有.preventDeault()
全局调用键盘事件并使用我自己的热键而不是被迫使用不同网站定义的那些。问题是我无法弄清楚如何在不查看具体网站代码的情况下解开类似的东西。我不想阻止所有JS - 只是应该由我控制的东西而不是开发人员 - 但我不明白如何使它变得简单和全局。
答案
禁用阻止网站代码默认的能力可能会使该网站不稳定并且可能无法使用。
您可以在preventDefault
(它是KeyboardEvent
的子类,它是UIEvent
的子类,其中实现标准Event
)上创建preventDefault
的覆盖,如下所示:
KeyboardEvent.prototype.preventDefault = function() { };
(writable
的enumerable
上的configurable
,Event
和preventDefault
标志都是true
,所以这里不需要Object.defineProperty
。)
例:
KeyboardEvent.prototype.preventDefault = function() { };
// This event handler *should* prevent typing in the input, but doesn't because we've broken preventDefault
document.getElementById("the-input").addEventListener("keydown", function(e) {
e.preventDefault();
}, false);
<input id="the-input" type="text">
以上是关于禁止.preventDefault()无处不在的主要内容,如果未能解决你的问题,请参考以下文章
10 动态属性:[name]动态方法@[event]禁止默认提交e.preventDefault()
JavaScript通过preventDefault()使input[type=text]禁止输入但保留光标
微信浏览器禁止页面下拉查看网址(不影响页面内部scroll)