Vanilla JavaScript:禁用网页中预先存在的键组合
在这个随机列表中,用户可以添加一些内容(比如“test”),然后通过先前存在的Alt+Shift+S组合键保存它 我希望防止这种行为,特别是(Vanilla JavaScript:禁用网页中预先存在的键组合,javascript,jquery,html,return,keyboard-shortcuts,Javascript,Jquery,Html,Return,Keyboard Shortcuts,在这个随机列表中,用户可以添加一些内容(比如“test”),然后通过先前存在的Alt+Shift+S组合键保存它 我希望防止这种行为,特别是(document.querySelector(“#wpSave”).remove();)的保存按钮 我尝试了以下失败的代码: // ==UserScript== // @name wiki // @match https://*.wikipedia.org/* // ==/UserScript== document.addE
document.querySelector(“#wpSave”).remove();
)的保存按钮
我尝试了以下失败的代码:
// ==UserScript==
// @name wiki
// @match https://*.wikipedia.org/*
// ==/UserScript==
document.addEventListener("DOMContentLoaded", ()=>{
document.addEventListener('keypress', function(e) {
if (e.key == 16 && e.key == 18 && e.key == 83) {
return false;
}
});
});
我还尝试用e.preventDefault()
或evt.stopPropagation()
替换return false
,但都失败了(没有控制台错误)
代码怎么了
注意:这个问题不同于一般性地禁用给定的预先存在的组合键功能,而不是一般性地保存功能
dotoconor的更新 我在控制台中使用了此选项,但仍然存在相同的问题:
document.addEventListener("DOMContentLoaded", ()=>{
const state = {};
document.addEventListener('keydown', function(e) {
state[e.key] = true;
});
document.addEventListener('keyup', function(e) {
state[e.key] = false;
});
document.addEventListener('keyup', function(e) {
state[e.key] = false;
if (state["Alt"] && state["Shift"] && (state["S"] || state["s"])) {
return e.preventDefault();
}
});
});
一次只能出现一个键事件,因此您必须创建一个状态机来确定哪些键事件处于打开和关闭状态。 考虑这一点:
const state={};
文档.添加的事件列表器('keydown',函数(e){
状态[e.key]=真;
});
document.addEventListener('keyup',函数(e){
状态[e.key]=假;
});
现在,您可以检查所需的键是否一次全部按下,然后防止最后一次按键从DOM中滴下
document.addEventListener('keyup',函数(e){
状态[e.key]=假;
如果(状态[“Alt”]&&state[“Shift”]&&(状态[“S”]| |状态[“S”])){
返回e.preventDefault();
}
});
很高兴知道可能存在的副本。。。实际上是如何工作的。这里有问题吗?我已经用我使用的代码更新了问题,请在那里查看。