2012-03-05 18 views
15

¿Cómo se sobrepone a los manejadores de eventos? Tengo un script dicen a.jsimpedir que se omita window.onload javascript

window.onload = function() { 
    //Handler in a.js 
} 

otro guión decir b.js

window.onload = function() { 
    //Handler in b.js 
} 

donde,

a.js es una especie de biblioteca tercera parte construida por mí

b.js es un editor que usa mi script [No puedo hacer ningún cambio aquí]

¿El controlador onload en b.js anulará el controlador de a.js?

En caso afirmativo, ¿cómo evitar que esto suceda?

¿Se creará una cola de todos los controladores de eventos en a.js y se eliminará en la ayuda del evento?

¿Pero sabrá a.js todos los controladores de eventos para un evento por adelantado hasta que se cargue b.js?

Los pensamientos y las referencias ayudaría

Respuesta

8

Uso element.addEventListener o window.attachEvent en las versiones de IE de nivel inferior.

Muestra addEvent método:

function addEvent(node, type, listener) { 
    if (node.addEventListener) { 
     node.addEventListener(type, listener, false); 
     return true; 
    } else if (node.attachEvent) { 
     node['e' + type + listener] = listener; 
     node[type + listener] = function() { 
      node['e' + type + listener](window.event); 
     } 
     node.attachEvent('on' + type, node[type + listener]); 
     return true; 
    } 
    return false; 
}; 

Nota - La mayoría, si no todas, las modernas bibliotecas JavaScript como jQuery y MooTools tienen sus propias implementaciones. Recomiendo aprovechar sus API, ya que abstraen diferentes implementaciones del navegador y se han probado exhaustivamente.

+0

¿por qué necesitamos nodo [ 'e' + Tipo + oyente]? ¿No funcionará node.attachEvent ('on' + type, listener)? – Tamil

16

se debe utilizar addEventListener() tener varios controladores para el mismo evento

window.addEventListener("load", yourfunction, false); 
-1

Sí, la segunda sentencia anula la primera. Como está utilizando el modelo de registro tradicional, solo se permite un identificador de evento para cualquier evento y objeto determinados. La asignación de función no es acumulativa. Pero se puede:

window.onload = function() {handlerinb(); handlerina()} 
Cuestiones relacionadas