【问题标题】:How to disable Windows keys (logo key and menu key) using Javascript如何使用 Javascript 禁用 Windows 键(徽标键和菜单键)
【发布时间】:2017-02-11 17:06:15
【问题描述】:

我编写了这段 Javascript 代码,但它并没有禁用 2 个 Windows 键(我的意思是徽标键和菜单键):

document.onkeydown = function(e) {
    document.title = e.keyCode;
    if (e.keyCode == 91 || e.keyCode == 93) {
        window.event.keyCode = 0;
        window.event.returnValue = false;
        return false;
    }
};

这 2 个 window.xxx 语句实际上不是必需的,但我添加它们是为了购买保险(只是怀疑 e 不完全等于 window.event)。

所以我想问这个问题:“有没有一种可行的方法,直接或间接地用 Javascript 完成这项工作?”

【问题讨论】:

  • 01 似乎很奇怪。它适用于一把钥匙还是另一把钥匙?
  • 你想知道你要捕获什么键吗?
  • 您可以在返回之前将e.stopPropagation(); 扔进去。此外,如前所述,01 有点奇怪。这是list of keycodes
  • @SJnawali:我想捕获的是那两个 Windows 键(窗口徽标键和 Windows 上下文菜单键)。 Wiki 称它们为“Windows 密钥”。为了更清楚,我将标题修改为“开始键”和“菜单键”。
  • @dinjas:这是一个错字,已经更正为 91。感谢您指出错字。我尝试了 e.stopPropagation() 但没有帮助。

标签: javascript windows windows-key


【解决方案1】:

您的代码看起来不错,尝试用这个简单的脚本找出真正的键码:

document.onkeydown = checkKeycode
function checkKeycode(e) {
  var keycode;
  if (window.event) keycode = window.event.keyCode;
  else if (e) keycode = e.which;
  alert("keycode: " + keycode);
}

要禁用某些键,您可以修改功能(例如“Enter”):

document.onkeydown = checkKeycode
function checkKeycode(e) {
  var event = e || window.event;
  var keycode = event.which || event.keyCode;

  if (keycode == 13) {
    // return key was pressed
  }
}

【讨论】:

  • 我很确定徽标键是代码 91,菜单键是 93。之前的 01 是一个错字。
  • 我的代码和你的完全一样。但是,Windows 键是特殊情况。我还尝试了您的代码(将 13 更改为 91 或 93),它也不会阻止 Windows 键。
  • 你找到解决方案了吗?
  • @Zolter 我试过你的代码。 91 适用于窗户。但这并没有停止 windows 键,请您帮我解决如何在我的应用程序页面打开时禁用所有键盘键。这是我正在尝试但无法停止 Windows 按键的代码 stroke.document.onkeydown = checkKeycode function checkKeycode(e) { var event = e ||窗口.事件; var keycode = event.which ||事件.keyCode; if (keycode == 91) { window.event.keyCode = 0; window.event.returnValue = false;返回假; // 返回键被按下 } }
  • 您可以结帐keycode.info 以轻松找到您的关键代码(而不是使用稍微麻烦的警报)
【解决方案2】:

JavaScript 无法阻止 Windows 徽标键的效果,该键(释放时)应该会调出 Window 的开始菜单。结合其他键,它具有其他系统范围的效果(如M = 最小化所有窗口)。这是在浏览器上下文之外发生的事情,因此不能也不应该被浏览器中运行的代码阻止。

Windows 菜单键可以在一定程度上被禁用,如this answer 中所述:

$(function(){
    var lastKey=0;
    $(window).on("keydown", document, function(event){
        lastKey = event.keyCode;            
    });

    $(window).on("contextmenu", document, function(event){
        if (lastKey === 93){
            lastKey=0;
            event.preventDefault();
            event.stopPropagation();
            return false;
        }
    });
});

【讨论】:

    猜你喜欢
    • 2014-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-06
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多