Ver Mensaje Individual
  #3 (permalink)  
Antiguo 28/07/2010, 10:01
Avatar de zerokilled
zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 7 meses
Puntos: 1485
Respuesta: Navegar por el sitio presionando teclas

aunque la consideré, yo no lo elegería la opción de accesskey porque cada navegador requiere una combinación distinta y la idea es que puedas usar tu propia combinación de teclas. por otra parte accesskey solo funciona con elementos que pueden recibir el foco (input, textarea, a, button).

de momento tengo un código un tanto simple para agregar accesos directo (hotkey o shortcut) pero tengo que seguir elaborandola para soportar una gama de posibilidades de combinaciones. la idea es que te sirva de inicio. por ahora solo funciona para hacer combinaciones con CTRL, ALT, y SHIFT con un caracter alfanumérico.
Código:
var Handler = {
add: function(elem, event, handler, capture){
	try{
	elem.addEventListener(event, handler, capture);
	} catch(error){
	elem.attachEvent('on' + event, handler);
	}
},

remove: function(elem, event, handler, capture){
	try{
	elem.removeEventListener(event, handler, capture);
	} catch(error){
	elem.detachEvent('on' + event, handler);
	}
},

addHotkey: function(keys, action){
var modifiers = keys.toLowerCase().match(/\b\w{2,}\b/g), key = keys.toUpperCase().match(/\b\w\b/);
Handler.add(document, "keydown", function(evt){
for(var i = 0; modifiers && i < modifiers.length; i++) if(!evt[modifiers[i]+"Key"])return;
if(key && evt.keyCode != key[0].charCodeAt(0))return;
action(evt);
}, false);
}
} // Handler;



/* Argumentos:
** string keys: la combinación de teclas a registrar.
** function action: función o método a invocar para la combinación.
*/

// ejemplo de uso;
Handler.addHotkey("CTRL + ALT + SHIFT + I", function(){alert("funcion que se invoca con el hotkey agregado");});
aclarar algunos detalles. todos los hotkeys se registran en el objeto document con el evento keydown. de modo que no importa donde este situado el foco, el hotkey siempre estará disponible. el formato del argumento keys consiste en separar cada tecla con algún caracter no alfanumérico a excepción del guión bajo (underscore: _). por ejemplo, "Ctrl G", "Shift+U", "Alt|E". la función asignada al segundo parametro recibirá como argumento el objeto event en caso de necesitarlo.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 28/07/2010 a las 10:07