gpt4 book ai didi

javascript - Vanilla JavaScript : Disable all key combos whatsoever in an entire website

转载 作者:搜寻专家 更新时间:2023-10-31 08:50:06 26 4
gpt4 key购买 nike

有时,当您使用网站时,它们包含一个或多个键盘组合或(“键盘快捷键”),例如 Alt+Shift+SCTRL+Shift+D从某种 Angular 来看,该网站(或该网站中的一个或多个网页)是独一无二的。

一个很好的广泛示例是您在 edit-page of a random user-page 中获得的不同组合键。在维基百科中(将鼠标放在一个选项上通常会显示描述其组合键的链接描述)。

可能的问题

有时,网站的一组组合键可能会与给定操作系统的这些组合发生冲突(如果组合用于罕见的错误,甚至会导致编辑错误)。

我的问题

是否有一种“暴力”(和普通的)JavaScript 方法来禁用整个网站中的所有预先存在的组合键?不仅仅是一个或两个预先存在的(特定的)组合键,而是所有组合,一次完成?

也许某种 for 循环可以做到这一点?

我可以在 Greasemonkey 或 Tampermonkey 等浏览器脚本执行器中运行此代码。

我为什么问这个问题:

我在 this question 中找到“令人满意”的答案后问了这个问题和 this question这是我个人询问的,并且包含我迄今为止尝试过的各种代码。

重要提示:

一般来说,我认为任何人都不应该这样做(当然也不要强制别人这样做),因为它会减少 Web Accessibility一般的网络应用程序;我描述的问题很少见,并且涉及我遇到的个人问题。

最佳答案

我想我会尝试通过 the method described here 来阻止事件监听器.

window.addEventListener("keydown",  function (e) { e.stopPropagation(); }, true);
window.addEventListener("keyup", function (e) { e.stopPropagation(); }, true);
window.addEventListener("keypress", function (e) { e.stopPropagation(); }, true);

这将阻止所有听众观看任何按键。如果这太宽泛,你可以添加一些逻辑来仅在修饰符键被保留时停止传播,例如

if (e.ctrlKey) {
e.stopPropagation();
}

编辑:

上面的代码在我用来测试的页面上有效,但在你的维基百科讨论页上不起作用,因为维基页面实际上没有使用事件监听器,而是使用 accesskey。属性。在这种情况下,删除属性将删除键盘快捷键:

document.querySelectorAll("[accesskey]").forEach(function(el) {
el.removeAttribute('accesskey');
});

关于javascript - Vanilla JavaScript : Disable all key combos whatsoever in an entire website,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52928751/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com