11548 sujets

JavaScript, DOM et API Web HTML5

Salut,

Dans un ancien message j'indiquais que je chargais le contenu d'une iframe pour la stocker.
Je cherche une fonction qui laisse le temps de copier tout le contenu de l'iframe avant de pouvoir passer à l'instruction suivante (var resultat = contenu.match(reg);)

Ci-dessous le code ou

	contenu = getIframeContent();//récupère le contenu de l'iframe
	
	//ici la fonction que je cherche 

        var resultat = contenu.match(reg);
	if(resultat!=null)
	{

	//le traitement	
	}		


Lorsque j'applique un
setTimeout("contenu=getIframeContent();",0);
à la place de
contenu=getIframeContent();
,
Modifié par yaw (09 May 2007 - 12:28)
Explique un peu mieux, j'ai rien compris à ce que tu veux faire.

Remarque rapide, ça :
setTimeout(..., 0);
est une abération en elle-même. A quoi ça sert de temporiser une instruction si le délai est de 0 ??
Le 8 mai étant un jour férié, il est possible que bon nombre d'entre nous aient passé du temps loin de leur clavier Smiley cligne

Si j'ai bien compris, tu souhaites suspendre l'exécution du javascript tant que tout le contenu de l'iframe n'a pas été chargé?

Si c'est le cas, je me demande si tu ne pourrais pas affecter un gestionnaire d'événement au chargement de ton iframe (sur l'événement load), qui se contenterait de retourner un booléen, qui à son tour conditionnerait l'exécution du reste de ton script...

... le tout étant bien évidemment conçu de manière à prendre en compte l'accessibilité Smiley cligne
Pour répondre à QuentinC, même si la commande settimeout("fonction",0) ne semble rien faire, elle permet de charger le contenu de l'iframe. Si je laisse que la fonction, ça ne marche pas.

Yes Gilles c ce que je cherche à faire, pourrais-tu m'expliquer plus en détails ta méthode car je ne vois pas trop ce que tu veux faire...

Thx
grosso modo, un truc qui ressemblerait à :


var fonction=function(contenu){
	var resultat = contenu.match(reg);

	if(resultat!=null){
		//le traitement	
	}	
}

var contenu = getIframeContent();
var iframe=document.getElementById('iframe');

var sendFunction=function(){
	fonction(contenu);
}

if(iframe.attachEvent) iframe.attachEvent('onload', sendFunction)
else iframe.addEventListener('load', sendFunction, false);

Modifié par MacIntoc (09 May 2007 - 10:28)
j'ai trouver une méthode plus bourrin en chargant toute les iframes au lancement de la page. It works, thx quand même Smiley cligne