1

我编写了这段 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 来完成这项工作?”

4

2 回答 2

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
  }
}
于 2013-05-15T03:51:32.787 回答
1

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

本答案所述,Windows 菜单键可能会被禁用:

$(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;
        }
    });
});
于 2017-02-11T09:06:15.380 回答