如何使用Javascript禁用Windows键(徽标键和菜单键)

How to disable Windows keys (logo key and menu key) using Javascript

本文关键字:菜单 Javascript 禁用 Windows 何使用      更新时间:2023-09-26

我写了这个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窗口。xxx语句实际上没有必要,但我添加它们是为了购买保险(只是怀疑e不完全等于window.event)。

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

你的代码看起来是正确的,试着用这个简单的脚本找出真正的关键代码:

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
  }
}

JavaScript不能停止Windows标志键的效果,该键(释放时)应该会弹出窗口的开始菜单。与其他键结合使用,它具有其他系统范围的效果(如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;
        }
    });
});