Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vanilla JavaScript:禁用网页中预先存在的键组合_Javascript_Jquery_Html_Return_Keyboard Shortcuts - Fatal编程技术网

Vanilla JavaScript:禁用网页中预先存在的键组合

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

在这个随机列表中,用户可以添加一些内容(比如“test”),然后通过先前存在的Alt+Shift+S组合键保存它

我希望防止这种行为,特别是(
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();
}
});

很高兴知道可能存在的副本。。。实际上是如何工作的。这里有问题吗?我已经用我使用的代码更新了问题,请在那里查看。