Ver Mensaje Individual
  #10 (permalink)  
Antiguo 22/09/2010, 10:25
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
Puntos: 1485
Respuesta: Chrome. Un verdadero dolor de cabeza al solo capturar teclas.

@masterojitos,
los dos codigos anteriores son practicamente los mismos. en el modelo estandar de DOM Event, el listener o handler -la funcion que captura el evento- recibe un parametro: el objeto event. inclusive si nuestra funcion no le indicamos argumentos aun asi recibe el objeto. si es este ultimo caso, el objeto se puede referenciar de dos formas: por el array arguments, o por el nombre event. este nombre automaticamente se lo asigna el navegador. fijate que no dice window.event, porque ya en este caso se refiere a una propiedad en el ambito global.

al comentario anterior me referia a lo siguiente.
Código:
function fn(){
alert("params: "+arguments.length+"\n"+arguments[0]);
}

// handler asignado por propiedades javascript;
self.onclick = fn;

// handler registrado con funciones del DOM;
self.addEventListener('click', fn, false);

// handler declarado como atributo html;
<body onclick="alert('length: 'arguments.length+'\nobject: '+arguments[0]); fn(arguments[0]);">...</body>
prestale gran atencion al ultimo ejemplo. pareceria dificil de entender por que arguments existe dentro de los eventos como atributos html. simple, los eventos son funciones. en html, aunque estas declarando un atributo, a nivel javascript estas creando una funcion. por tanto, si invocaras la funcion fn sin pasar la referencia del objeto event en el atributo onclick de body, entonces te produce error. a eso me referia con la cita anterior: mientras el evento sea declarado por javascript no vas a tener problema; si lo declaras como atributo asegurarse de pasar como parametro el objeto event.

aclaro que este concepto solamente existe en navegadores que siguen el estandar DOM Event.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.