pagina - Agregue el controlador de eventos para body.onload por javascript dentro de la parte<body>
funcion onload javascript (5)
Queremos incluir mapas de Google Maps API en nuestro documento. La documentación le indica que inicialice el mapa con una función llamada por el evento onload () del cuerpo.
La forma ordinaria de llamar:
<body onload="initialize_map();">
Esto no nos funciona porque estamos usando Template :: Toolkit y la etiqueta <body>
ya está incluida en nuestro contenedor. En resumen: la etiqueta <body>
ya está impresa cuando nuestro código javascript comienza a ejecutarse.
Intenté algo como esto pero solo funciona para onclick
, no onload
. Supongo que eso se debe a que el código javascript está debajo de la etiqueta <body>
.
var body = document.getElementsByTagName("body")[0];
body.addEventListener("load", init(), false);
function init() {
alert("it works!");
};
Cualquier ayuda sobre cómo iniciar un mapa de Google Maps apreciado!
Como @epascarello mencionó para los navegadores estándar de W3C, debe usar:
body.addEventListener("load", init, false);
Sin embargo, si quieres que funcione en IE <9 también puedes usar:
var prefix = window.addEventListener ? "" : "on";
var eventName = window.addEventListener ? "addEventListener" : "attachEvent";
document.body[eventName](prefix + "load", init, false);
O si lo quieres en una sola línea:
document.body[window.addEventListener ? ''addEventListener'' : ''attachEvent''](
window.addEventListener ? "load" : "onload", init, false);
Nota: aquí obtengo una referencia directa al elemento del cuerpo a través del documento, guardando la necesidad de la primera línea.
Además, si está usando jQuery, y quiere usar el evento DOM ready
lugar de cuando el cuerpo se load
, la respuesta puede ser aún más corta ...
$(init);
Como ya estábamos usando jQuery para una función gráfica de caramelos, terminamos usando esto. Un código como
$(document).ready(function() {
// any code goes here
init();
});
hizo todo lo que queríamos y se preocupa por las incompatibilidades del navegador.
Deberías usar lo siguiente en su lugar (funciona en todos los navegadores más nuevos):
window.addEventListener(''DOMContentLoaded'', init, false);
Simplemente envuelva el código que desea ejecutar en el evento onload del objeto de ventana:
window.onload = function(){
// your code here
}
body.addEventListener("load", init(), false);
Ese init () está diciendo que ejecute esta función ahora y asigne lo que regrese al evento de carga.
Lo que desea es asignar la referencia a la función, no el resultado. Así que necesitas soltar el ().
body.addEventListener("load", init, false);
También deberías usar window.onload y no body.onload.
addEventListener
es compatible con la mayoría de los navegadores, excepto IE 8 .