Stisk klávesy Capture bez umístění vstupního prvku na stránku?

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>");
});