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

Responder a