Ajouter un gestionnaire d'événements pour le corps.onload par javascript dans <body> partie
Nous voulons inclure une les cartes de Google maps API dans notre document. La documentation indique pour initialiser la carte avec une fonction appelée par l'événement onload() de l'organisme.
La façon ordinaire de l'appeler:
<body onload="initialize_map();">
Cela ne fonctionne pas pour nous parce que nous sommes à l'aide de Modèle::Trousse à outils et le <body>
étiquette est déjà inclus dans nos wrapper. En bref: La <body>
étiquette est déjà imprimée lors de notre code javascript commence à courir.
J'ai essayé quelque chose comme ça, mais il fonctionne seulement pour onclick
, pas onload
. Je suppose que c'est parce que le code javascript est sous la <body>
balise elle-même.
var body = document.getElementsByTagName("body")[0];
body.addEventListener("load", init(), false);
function init() {
alert("it works!");
};
Toute aide à tirer une carte Google Maps apprécié!
Vous devez vous connecter pour publier un commentaire.
Que la fonction init() est en train de dire exécuter cette fonction et assigner ce qu'elle retourne à la charge de l'événement.
Ce que vous voulez est d'attribuer la référence à la fonction, pas le résultat. Si vous avez besoin de déplacer le ().
Aussi, vous devriez être en utilisant la fenêtre.onload et pas le corps.onload
addEventListener
est pris en charge dans la plupart des navigateurs sauf IE 8.attachEvent
. quirksmode.org il décrit très bien: quirksmode.org/js/events_advanced.htmlVous devriez vraiment utiliser ce qui suit (fonctionne dans tous les navigateurs les plus récents):
document.addEventListener('load', init, false);
window.addEventListener('load', init, false);
Comme @epascarello mentionné pour la norme W3C navigateurs, vous devez utiliser:
Toutefois, si vous voulez qu'il fonctionne sur IE<9 ainsi, vous pouvez utiliser:
Ou si vous le souhaitez en une seule ligne:
Remarque: ici, j'obtient une droite de référence à l'élément de corps via le document, l'enregistrement de la nécessité, pour la première ligne.
Aussi, si vous êtes à l'aide de jQuery, et que vous voulez utiliser la
DOM ready
événement plutôt que quand le corpsload
s, la réponse peut être encore plus court...Que nous étions déjà à l'aide de jQuery graphique eye-candy fonctionnalité nous nous sommes retrouvés à l'aide de ce. Un code comme celui -
fait tout ce que nous voulions et se soucie des incompatibilités entre navigateurs à sa propre.
$(function() { init(); });
disponibles.$(init);
Enroulez simplement le code que vous voulez exécuter dans l'événement onload de l'objet window: