encuadernar correctamente eventos javascript


Answers

Sé que solo preguntaste cómo vincular eventos. Pero Ooooo, la diversión no termina allí. Hay mucho más para obtener este navegador cruzado correcto que solo el enlace inicial.

La respuesta de @ d. será suficiente para el caso específico del evento de load de la window que está buscando. Pero puede dar a los lectores novatos de su código una falsa sensación de "hacerlo bien". Solo porque hayas vinculado el evento no significa que hayas tenido cuidado de normalizarlo. Tal vez sea mejor simplemente arreglar window.onload :

window.onload = (function(onload) {
  return function(event) {
    onload && onload(event);

    // now do your thing here
  }
}(window.onload))

Pero para el caso general de la vinculación de eventos @ d. La respuesta está lejos de ser satisfactoria como para ser frustrante. Lo único que hace bien es usar detección de características en lugar de detección de navegador.

No es necesario exagerar aquí, pero el enlace de eventos de JavaScript es probablemente la razón número 1 para ir con una biblioteca de JavaScript. No me importa cuál es, otras personas han solucionado este problema una y otra vez. Aquí están los problemas en una implementación hecha en casa una vez dentro de su función de controlador:

  • ¿Cómo puedo obtener el objeto del event ?
  • ¿Cómo evito la acción predeterminada del evento (por ejemplo, hacer clic en un enlace pero no navegar)
  • ¿Por qué this apunta al objeto window todo el tiempo?
  • (Eventos de ratón Re) ¿Cuáles son los coords x / y del evento?
  • ¿Qué botón del mouse activó el evento?
  • ¿Fue un Ctrl-clic o simplemente un clic normal?
  • ¿En qué elemento se desencadenó realmente el evento?
  • ¿A qué elemento va el evento? (es decir, relacionadoTarget, por ejemplo, blur )
  • ¿Cómo cancelo el burbujeo del evento a través de su DOM principal?
  • (Re evento burbujeando) ¿qué elemento está realmente recibiendo el evento ahora? (es decir, currentTarget )
  • ¿Por qué no puedo obtener el keydown código de este evento keydown ?
  • ¿Por qué mi página está perdiendo memoria cuando agrego todos estos controladores de eventos? Argh!
  • ¿Por qué no puedo Desvincular esta función anónima que envié antes?

Y la lista continúa...

La única buena razón para hacer los suyos en estos días es para aprender. Y eso está bien. Aún así, lea la introducción de PPK a los eventos del navegador . Mira la fuente jQuery . Mira la fuente del Prototipo . No te arrepentirás.

Question

Estoy buscando la forma más adecuada y eficiente para enlazar eventos de JavaScript ; particularmente el evento de carga (me gustaría que el evento ocurra después de que se carguen tanto la página como todos los elementos, como las imágenes ). Sé que hay formas simples de hacer esto en jQuery, pero me gustaría tener el método de JavaScript en bruto más eficiente.




window.onload = function() {
   // ...
};



Links