Как отключить ключи Windows (ключ с логотипом и ключ меню) с помощью Javascript
Я пишу этот код 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? "
2 ответа
Ваш код выглядит правильно, попробуйте узнать реальные коды клавиш с помощью этого простого скрипта:
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; } }); });