javascript - teclas - ¿Presiona la tecla de captura sin colocar un elemento de entrada en la página?
como hacer captura de pantalla en windows 7 laptop (6)
Cómo capturar la pulsación de tecla, por ejemplo, Ctrl + Z, sin colocar un elemento de entrada en la página en JavaScript? Parece que en IE, los eventos de keypress y keyup solo pueden vincularse a los elementos de entrada (cuadros de entrada, áreas de texto, etc.)
Para JS moderno, use event.key
!
document.addEventListener("keypress", function onPress(event) {
if (event.key === "z" && event.ctrlKey) {
// Do something awesome
}
});
Código y detecta ctrl + z
document.onkeyup = function(e) {
if(e.ctrlKey && e.keyCode == 90) {
// ctrl+z pressed
}
}
Detectar pulsación de tecla, incluidas combinaciones de teclas:
window.addEventListener(''keydown'', function (e) {
if (e.ctrlKey && e.keyCode == 90) {
// Ctrl + z pressed
}
});
El beneficio aquí es que no sobrescribe ninguna propiedad global, sino que simplemente introduce un efecto secundario. No es bueno, pero definitivamente es mucho menos nefasto que otras sugerencias aquí.
Para teclas no imprimibles como teclas de flecha y teclas de método abreviado como Ctrl-z, Ctrl-x, Ctrl-c que pueden desencadenar alguna acción en el navegador (por ejemplo, dentro de documentos o elementos editables), es posible que no obtenga una pulsación de tecla evento en todos los navegadores. Por este motivo, debe utilizar la keydown
, si le interesa suprimir la acción predeterminada del navegador. Si no, keyup
igual de bien.
keydown
un evento de selección para document
trabajos en todos los principales navegadores:
document.onkeydown = function(evt) {
evt = evt || window.event;
if (evt.ctrlKey && evt.keyCode == 90) {
alert("Ctrl-Z");
}
};
Para una referencia completa, recomiendo encarecidamente el artículo de Jan Wolter sobre el manejo de claves de JavaScript .
document.onkeydown = keyDown;
document.onkeypress = keyPress;
etc.
Funciona para mí en IE
jQuery también tiene una implementación excelente que es increíblemente fácil de usar. A continuación, le mostramos cómo implementar esta funcionalidad en todos los navegadores:
$(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>");
});
Probado en IE7, Firefox 3.6.3 y Chrome 4.1.249.1064
Otra forma de hacerlo es utilizar el evento de selección y rastrear el evento .keyCode. Sin embargo, dado que jQuery normaliza keyCode y charCode utilizando event.which, su especificación recomienda utilizar event.which en una variedad de situaciones:
$(document).keydown(function(e){
if (e.keyCode==90 && e.ctrlKey)
$("body").append("<p>ctrl+z detected!</p>");
});