我写了这个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中完成这项工作? "
答案 0 :(得分: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);
}
要取消某些键修改功能(例如“输入”):
document.onkeydown = checkKeycode
function checkKeycode(e) {
var event = e || window.event;
var keycode = event.which || event.keyCode;
if (keycode == 13) {
// return key was pressed
}
}
答案 1 :(得分:1)
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; } }); });