有什么方法可以阻止/禁用浏览器中的CTRL + [key]快捷键?

时间:2014-07-15 17:37:06

标签: javascript html html5

我知道很多人会因为被问到而感到生气但是......

我有一个使用WebGL和Pointer Lock API的游戏。由于许多游戏具有“蹲伏”的性质。在CTRL我想知道是否有任何可能的方法来停止CTRL + S和CTRL + W等浏览器快捷方式......

目前我不得不严厉禁止控件在其中包含任何CTRL键。我已经设定了#crouch' C也是常见但我也有关于制作MMORPG风格的游戏的想法,你会有几个能力的动作条,由于CTRL不可行,很多组合是不可能的。

1 个答案:

答案 0 :(得分:23)

  

注意:在Chrome Ctrl + W 为“已保留”,请使用window.onbeforeunload

     

注意: Chrome需要设置event.returnValue

在此代码中,document.onkeydown用于旧浏览器,window.onbeforeunload用于Chrome和Firefox

尝试此操作(禁用 Ctrl + W Ctrl + S ):

window.onbeforeunload = function (e) {
    // Cancel the event
    e.preventDefault();

    // Chrome requires returnValue to be set
    e.returnValue = 'Really want to quit the game?';
};

//Prevent Ctrl+S (and Ctrl+W for old browsers and Edge)
document.onkeydown = function (e) {
    e = e || window.event;//Get event

    if (!e.ctrlKey) return;

    var code = e.which || e.keyCode;//Get key code

    switch (code) {
        case 83://Block Ctrl+S
        case 87://Block Ctrl+W -- Not work in Chrome and new Firefox
            e.preventDefault();
            e.stopPropagation();
            break;
    }
};