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

我写这个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声明实际上是不必要的,但我join他们购买保险(只是怀疑e不完全等于window.event)。

所以我想问一下这样一个问题:“用Javascript做这个工作是否有一个可行的方法,直接或间接?

Solutions Collecting From Web of "如何使用Javascript禁用Windows键(标志键和菜单键)"

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

 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徽标键的效果,这个键(当被释放时)应该调出Window的开始菜单。 与其他键相结合,它具有其他系统的影响(如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; } }); });