Hola. Tengo un problemilla con JavaScript y me preguntaba si alguien
podia ayudarme con él. Estoy tratando de detectar eventos del teclado y
ejecutar funciones para ellos. Por ejemplo, Control + S = guardar(),
Control + N = nuevo(), etc. Hasta ahora logré detectar los eventos sin
problema (evento onkeydown), pero necesito que si decido "escuchar" la
combinación "Control + S" no ejecute el comportamiento por defecto, que
es guardar la página. Probé a poner preventDefault(), pero nada de nada.
Con jQuery sería fácil, pero pesa +50kb que no utilizo, por lo que
incluirlo sería un lujo, es por eso que quiero usar JavaScript puro.
Este es mi código:
<script type = "text/javascript">
var keystrokes = [];
var keystroke = function (key, callback) {
this.key = key;
this.callback = callback;
}
function handleKeyDown (e) {
for (i in keystrokes) {
if(e.keyCode == keystrokes[i].key.charCodeAt(0) &&
e.ctrlKey) {
keystrokes[i].callback.apply();
if (e.stopPropagation) e.stopPropagation();
if (e.preventDefault) e.preventDefault();
}
}
}
function listenEvent(eventTarget, eventType, eventHandler) {
if (eventTarget.addEventListener) {
eventTarget.addEventListener(eventType,
eventHandler,false);
} else if (eventTarget.attachEvent) {
eventType = "on" + eventType;
eventTarget.attachEvent(eventType, eventHandler);
} else {
eventTarget["on" + eventType] = eventHandler;
}
}
function bind(key, callback) {
keystrokes.push(new keystroke(key, callback));
}
listenEvent(document, "keydown", handleKeyDown);
bind ("S", function () {alert("Se presionó S");});
bind ("N", function () {alert("Se presionó N");});
</script>
--
Este mensaje ha sido analizado por MailScanner
en busca de virus y otros contenidos peligrosos,
y se considera que est� limpio.
______________________________________________________________________
Lista de correos del Grupo de Usuarios de Tecnologías Libres de Cuba.
Gutl-l@jovenclub.cu
https://listas.jovenclub.cu/cgi-bin/mailman/listinfo/gutl-l