Astuce API Google Map : enlever le onload du body

Sur l’API de Google map, le code proposé ressemble à cela :

 function initialize() {
      if (GBrowserIsCompatible()) {
        var map = new GMap2(document.getElementById("map_canvas"));
        map.setCenter(new GLatLng(37.4419, -122.1419), 13);
        map.setUIToDefault();
      }
    }

Si vous avez de l’AJAX dans vos pages ou que que voulez utiliser le onload du body pour autre chose, cela risque de coincer.

Voici donc l’astuce :

function pageFermeture() {
	GUnload();
}
    if (window.onload)
    {
            //Hang on to any existing onload function.
            gmapExistingOnload = window.onload;
    }

    window.onload=function(ev){
        //Run any onload that we found.
        if (gmapExistingOnload)
        {
                gmapExistingOnload(ev);
        }
        if (GBrowserIsCompatible()) {

          // custom init (must be specified in the page calling this view)
          //gMapsInit();
		  initialisation_gmap();
        }
    };

Mise à jour du 10 mars 2010, voici une autre façon de faire :

function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function'){
		window.onload = func
	} else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}
addLoadEvent(initialize);

Amusez-vous bien :)

Vous pouvez poster un commentaire, ou faire un trackback vers cet article.
  • http://www.restezconnectes.fr florent

    MacFly :

    @florent
    Je rencontre quelques soucis..
    Je souhaite afficher une carte et un parcours et les actualiser toute les x secondes grâce à ajax prototype.
    L’actualisation se passe bien mais la map ne s’affiche plus du tout ..

    Je n’ai bien juste qu’à ajouter addLoadEvent(function) pour chaque fonction voulue dans window.unload ?

    as-tu la page en ligne quelque part ? Sinon tu peux me l’envoyer pour que je regarde ton code source ?

  • MacFly

    @florent
    Je rencontre quelques soucis..
    Je souhaite afficher une carte et un parcours et les actualiser toute les x secondes grâce à ajax prototype.
    L’actualisation se passe bien mais la map ne s’affiche plus du tout ..

    Je n’ai bien juste qu’à ajouter addLoadEvent(function) pour chaque fonction voulue dans window.unload ?

  • http://www.restezconnectes.fr florent

    @MacFly
    Oui tout à fait.

  • MacFly

    Bonjour,
    Avez vous réussi à utiliser cette méthode ?

  • piloudu62

    Reste plus qu’à trouver comment l’utiliser O:-)

  • piloudu62

    merci merci ^^

  • http://www.restezconnectes.fr florent

    piloudu62 :

    Ca a l’air intéressant, mais si on pouvais voir le code se serait encore mieux
    ;-)

    Voilà les codes et en plus une nouvelle façon de faire.

  • piloudu62

    Ca a l’air intéressant, mais si on pouvais voir le code se serait encore mieux
    ;-)