Problème de calcul de dimension d'image sur onLoad

Signaler
Messages postés
90
Date d'inscription
mardi 21 mars 2006
Statut
Membre
Dernière intervention
10 mai 2010
-
Messages postés
246
Date d'inscription
vendredi 24 novembre 2006
Statut
Membre
Dernière intervention
21 décembre 2007
-
Bonjour à tous,

Je bloque sur la détermination des dimensions d'une image chargée, et ça fait un bout de temps que ça dure...
Voici en gros ce que j'ai:

var
ImgS new Image(); ImgS.src Pics[Index1];

ImgS.onLoad = CalculDim(ImgS);

function CalculDim(t) {

alert(t.width);

}

Ou bien un alert(ImgS.width);

Je suis à 0 au premier passage, puis j'ai enfin la largeur au second coup(code lancé sur appui bouton par ex).

Le onLoad est normalement déclenché quand l'image est totalement chargée, d'où mon incompréhension.
Tout se passe comme si la fonction CalculDim était lancée avant même le chargement total, puis quand je relance le tout ça devient ok car l'image est enfin en cache.
Pouvez-vous m'éclairer ?
Merci d'avance.

4 réponses

Messages postés
246
Date d'inscription
vendredi 24 novembre 2006
Statut
Membre
Dernière intervention
21 décembre 2007
2
Salut
au lieu de "ImgS.onLoad = CalculDim(ImgS);" essai avec

if(ImgS.complete == true){
CalculDim(ImgS)
}
Messages postés
246
Date d'inscription
vendredi 24 novembre 2006
Statut
Membre
Dernière intervention
21 décembre 2007
2
Ton code marche très bien, sinon si tu veux un autre essai avec celui-ci

ImgS.onComplete = CalculDim(ImgS);

(Le premier code que j'ai donné n'as marché que sous firefox)
Messages postés
90
Date d'inscription
mardi 21 mars 2006
Statut
Membre
Dernière intervention
10 mai 2010

Merci Yousfane.
Je pense en effet que le premier code est censé marcher. Mais ce n'est pas le cas avec IE7 et FF2.

Par contre je découvre le onComplete.

J'ai entre temps trouvé une alternative en bouclant sur un test de non pas de complete mais de la largeur non nulle.
Pas hyper glorieux mais efficace.

C'était justement pour éviter ça que j'avais cru trouver mon bonheur avec le onLoad. C'est pourtout tout bête comme code, et en plus la fonction est bien lancée sur l'évènement, mais j'ai toujours une dimension nulle au premier passage.
J'ai lu des messages par ailleurs de personnes se plaignant aussi des complete et onload. 
Pas essayé sous IE6, mais peut-on imaginer un bug sous les navigateurs récents IE7 et FF2. C'est un peu la solution de facilité de dire ça mais le code est tellement simple que je ne vois vraiment pas ce qui peut clocher...

   
Messages postés
246
Date d'inscription
vendredi 24 novembre 2006
Statut
Membre
Dernière intervention
21 décembre 2007
2
Salut
Le oncomplete ne marche qu'avec une image