11548 sujets

JavaScript, DOM et API Web HTML5

Salut.
Voici un bout de code plutôt simple :


var script = body.appendChild(document.createElement("script"));
script.type = 'text/javascript';
script.onload = doSomething;
script.src = url;


Avec n'importe quel navigateur digne de ce nom, une fois que mon script est chargé, la fonction doSomething est appelée. Normal quoi.
Oui mais ie ne l'entend pas de cette oreille.

Quelqu'un aurait une alternative ?
Modifié par Barbarossa (01 Jul 2010 - 12:01)
Trouvé !

Pour ie, on est amené à utiliser "onreadystatechange" plutôt que "onload". (Seule ie le prendra en compte.)
Et il y a même quelques autres pièges, parce que onreadystatechange saute parfois des états. Il faut donc en interroger plusieurs, et s'assurer de ne pas lancer deux fois "doSomething".

Voici ce que ça donne :



script.onload = doSomething;
script.onreadystatechange= function () {
	if ( !this.loaded && ( this.readyState=='loaded' || this.readyState=='complete' ) ) {
		doSomething();
	}
}


Merci moi. Merci Google. Merci http://unixpapa.com/js/dyna.html
Barbarossa a écrit :
Trouvé !

Pour ie, on est amené à utiliser "onreadystatechange" plutôt que "onload". (Seule ie le prendra en compte.)
Et il y a même quelques autres pièges, parce que onreadystatechange saute parfois des états. Il faut donc en interroger plusieurs, et s'assurer de ne pas lancer deux fois "doSomething".

Voici ce que ça donne :



script.onload = doSomething;
script.onreadystatechange= function () {
	if ( !this.loaded && ( this.readyState=='loaded' || this.readyState=='complete' ) ) {
		doSomething();
	}
}


Merci moi. Merci Google. Merci http://unixpapa.com/js/dyna.html




edit : comment on marque le sujet "résolu" ?