Jak zachytit stisknutí klávesy, např. Ctrl+Z, bez umístění vstupního prvku na stránku v JavaScriptu? Zdá se, že v IE mohou být události stisknutí a stisknutí klávesy spojeny pouze se vstupními prvky (vstupní pole, textové oblasti atd.)
Odpověď
jQuery má také vynikající implementaci, která se neuvěřitelně snadno používá. Zde je návod, jak byste mohli implementovat tuto funkci v různých prohlížečích:
$(document).keypress(function(e){ var checkWebkitandIE=(e.which==26 ? 1 : 0); var checkMoz=(e.which==122 && e.ctrlKey ? 1 : 0); if (checkWebkitandIE || checkMoz) $("body").append("<p>ctrl+z detected!</p>"); });
Testováno v IE7, Firefox 3.6.3 a Chrome 4.1.249.1064
Dalším způsobem, jak toho dosáhnout, je použít událost keydown a sledovat event.keyCode. Protože však jQuery normalizuje keyCode a charCode pomocí event.which, jejich specifikace doporučuje použít event.which v různých situacích:
$(document).keydown(function(e){ if (e.keyCode==90 && e.ctrlKey) $("body").append("<p>ctrl+z detected!</p>"); });