attendre que n images soient chargées.

Le
unbewusst.sein
comme je souhaite lire width et height de l'image, je ne peux le faire
que lorsque l'image est chargée (événement onload)

ainsi j'ai 4 images à charger, pour chacune d'elles, j'ai une propriété
"loaded" qui passe à true pendant l'événement onload :

this.img[this.img_names[i]].onload=function(e){
this.size=[this.width,this.height];
this.loaded=true;
}

ça, ça roule, j'ai vérifié en ajoutant un alert().


maintenant je dois vérifier que toutes les images sont chargées donc je
boucle ainsi sur les images :

var that=this;
this.all_imgs_loadedúlse;
function wait_img_loaded(){
var ld=true;
for(var i=0;i<that.img_names.length;i++){
ld=ld && that.img[that.img_names[i]].loaded;
}
f(ld) {alert('that.all_imgs_loaded=true');return true;}
else window.setTimeout('wait_img_loaded()',100);
}
wait_img_loaded();


ce que je cherche à faire est simplement de sortir de cette boucle
d'attente au bout de n X 100 ms, càd quand toutes les images sont
chargées.


MAIS, problème, j'ai une erreur JavaScript "wait_img_loaded" is not
defined à la ligne :

else window.setTimeout('wait_img_loaded()',100);


je pense que ce problème dépend|vient du contexte :

cette function est à l'intérieur d'une autre function (le 'constructeur'
de l'objet en question)

la page d'essai est ici :
<http://www.yvon-thoraval.com/JS/tooltip_new.xhtml>
--
Une Bévue
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Laurent vilday
Le #722387
var that=this;
this.all_imgs_loadedúlse;
function wait_img_loaded(){
var ld=true;
for(var i=0;i<that.img_names.length;i++){
ld=ld && that.img[that.img_names[i]].loaded;
}
f(ld) {alert('that.all_imgs_loaded=true');return true;}
else window.setTimeout('wait_img_loaded()',100);
}
wait_img_loaded();

MAIS, problème, j'ai une erreur JavaScript "wait_img_loaded" is not
defined à la ligne :

else window.setTimeout('wait_img_loaded()',100);

je pense que ce problème dépend|vient du contexte :


wait_img_loaded() n'est pas déclaré dans le contexte global

J'aurais fait (préférence personnelle, mais chacun fait comme il sent) :

setTimeout(wait_img_loaded, 100);

ou encore

setTimeout(function() { wait_img_loaded(); }, 100);

Ca devrait résoudre ton problème, non ?

--
laurent

unbewusst.sein
Le #721228
Laurent vilday
wait_img_loaded() n'est pas déclaré dans le contexte global


ben voilà mon "window." était sinon inutile en tk nuisible )))

J'aurais fait (préférence personnelle, mais chacun fait comme il sent) :

setTimeout(wait_img_loaded, 100);

Ca devrait résoudre ton problème, non ?


Ouais, impec, merci beaucoup !
--
Une Bévue

ASM
Le #721227
comme je souhaite lire width et height de l'image, je ne peux le faire
que lorsque l'image est chargée (événement onload)


Comme je suis perdu dans tous tes this, that, loaded, alert je te donne
ma ficelle avec boucle de rechargement induite successivement par le
chargement des images une à une :

var I = ['img1.jpg','01.png','truc.gif','photos/dcp_01254.jpg'];
var Isizes = [];

function setSizeImages(i) {
var img = new Image();
img.onload = function(){
Isizes[i] = img.width+'/'+img.height;
i++;
if(i<I.length) setSizeImages(i);
else {
I.loaded = true;
alert('tout est chargé ? '+I.loaded);
}
};
img.src = I[i];
}

I.loaded = false;
setSizeImages(0);



--
Stephane Moriaux et son (moins) vieux Mac déjà dépassé

unbewusst.sein
Le #721226
ASM
Comme je suis perdu dans tous tes this, that, loaded, alert je te donne
ma ficelle avec boucle de rechargement induite successivement par le
chargement des images une à une :

var I = ['img1.jpg','01.png','truc.gif','photos/dcp_01254.jpg'];
var Isizes = [];

function setSizeImages(i) {
var img = new Image();
img.onload = function(){
Isizes[i] = img.width+'/'+img.height;
i++;
if(i<I.length) setSizeImages(i);
else {
I.loaded = true;
alert('tout est chargé ? '+I.loaded);
}
};
img.src = I[i];
}

I.loaded = false;
setSizeImages(0);


ok, je vois, pas besoin de setTimeout par contre ça charge au fur et à
mesure.
--
Une Bévue

ASM
Le #721224
Bonjour

J ai du resoudre probleme ici :

http://philippe.chappuis.googlepages.com/vision_cdc.htm


C'est un beau projet.
Sauf que je n'aurais pas fait comme ça...

J'ai attendu longuement et bêtement que qque chose s'affiche :-(
Bien la peine d'avoir enfin l'ADSL pour être bloqué comme ça.

1) tu aurais pu te fendre de vraies vignettes au lieu de faire afficher
les grandes vues dans les petits cadres.
(pas regardé, mais je me demande pourquoi il faut un JS pour réduire les
vues ?)
2) puisque ce sont les grandes vues qui sont appelées *en clair* dans
les petits cadres, à quoi bon en pré-indiquer le chemin dans un array ?
3) puisque le href est renseigné à quoi bon répéter ce dernier dans le
lien JS vers la grande vue ?
4) le alt ne sert pas aux bulles-infos !
il faut utiliser title.

Le glissement de la "planche-contact" est assez hâché chez moi.
(et je te dis pas le tremblotis du faddage entre grandes vues pendant
que la planche-contact essaie de se glisser)


--
Stephane Moriaux et son (moins) vieux Mac déjà dépassé

unbewusst.sein
Le #721223
prac
J ai du resoudre probleme ici :

http://philippe.chappuis.googlepages.com/vision_cdc.htm


ok, merci !

et ils font du bon vin les chuisses ?
--
Une Bévue

prac
Le #721222
Bonsoir

Sur le vin, oui certainement !!!

- Sur le title versus alt merci à ASM de m avoir signalé l'erreur.
Certainement due à une diffiérence entre IE et FF. IE affiche une
bulle d'aide avec le contenu de alt si title ne figure pas.

- Pour la vitesse j ai amélioré, c est vrai que sous FF ca tremblotait

- Pour les vignettes la page finale est générée a partir d un fichier
xml contenant les photos bruts sans retouches et je les re-dimensionne
à la volée

- Je voulais obtenir une page finale avec toutes les adresses en dur
et un maximum de liens

- J utisie Google Page Creator et je n ai pas la possibilité de script
cote serveur (ce qui explique le cote tres agricole de la methode)

Merci de vos remarques et suggestions

POUR LES VINS SUISSES : http://philippe.chappuis.googlepages.com

POUR LE FICHIER XML DE DEPART : http://philippe.chappuis.googlepages.com/vi sion_cdc.xml

POUR LE FICHIER DE GENERATION : http://philippe.chappuis.googlepages.com/ge nerator_cdc.htm

LA VISIONNEUSE : http://philippe.chappuis.googlepages.com/vision_cdc.htm

Bonne soirée, et j aime beaucoup les grands vins français !!
ASM
Le #721221

- Sur le title versus alt merci à ASM de m avoir signalé l'erreur.
Certainement due à une diffiérence entre IE et FF.


Une différence de IE "tout court" ! Scrogneugneu !

IE affiche une
bulle d'aide avec le contenu de alt si title ne figure pas.


toutafé, et le title s'il y est,
... comme le font beaucoup d'autres brouteurs.
(bien qu'il n'y ait pas d'obligation normative dans ce sens)

- Pour la vitesse j ai amélioré, c est vrai que sous FF ca tremblotait


Bonne nouvelle. :-)

- Pour les vignettes la page finale est générée a partir d un fichier
xml contenant les photos bruts sans retouches et je les re-dimensionne
à la volée


Je me fous de savoir si c'est du xml ou du yml clévindiou !
C'est très vilain de balancer des images pas à leur taille d'affichage
et n'en démordrais pas.

T'as t'y essayé JS désactivé ? voir à voir ...

De plus j'ai ouvert le *.js ...
Je continue à ne pas comprendre qu'il faille un JS pour redimensionner
"à la volée" des images grâce à un JS alambiqué (*)
alors qu'une simple ligne en CSS ferait le travail.
On n'a que des images horizontales, il suffit de les fixer en largeur.

#album img { width: 240px }

à l'extrême extrème rigueur un truc sur le onload de l'image ?
et si vraiment ça démange

<div id="album">
<img href="chateau_neuf_du_Pape.jpg"
onclick="document.viewer.src = this.href;"
onload="var h = this.height, w = this.width;
if(h>w) {
this.style.width='160px';
this.style.marginTop = '-120px';
this.style.marginLeft = '-80px';
}
else {
this.style.width='240px';
this.style.marginTop = '-80px';
this.style.marginLeft = '-120px';
}"
alt="image Chateau Neuf du Pape"
title="Chateau Neuf du Pape : avignon.com" />
<img href="Grand_Cru.jpg"
onclick="affiche(this);"
onload="resizeImg(this);
alt="image Grand Cru"
title="Grand Cru : trifouillis.fr" />
.../...
</div>

Et aucun besoin de pré-post chargement
(enfin, là comme ça, et à mon idée ?!)
et ... normalement ... pas besoin du onlad ...
puisque le imagettes sont à la bonne dimension !!!


(*) ce doivent être les dérivés du vin qui déteignent.


- Je voulais obtenir une page finale avec toutes les adresses en dur
et un maximum de liens


sauf qu'un lien dans une bulle-info (non javascriptée pour) je n'en
ferai pas grand' chose, la bulle n'étant pas cliquable en l'état.

- J utisie Google Page Creator


inconnu au bataillon
(rien que par le nom ça doit être qque chose à manipuler !)
j'utilise alternativement mon index et mon majeur de la main droite
pour tout écrire dans un éditeur texte.

et je n ai pas la possibilité de script
cote serveur (ce qui explique le cote tres agricole de la methode)


Le côté agricole peut expliquer les champs de vignes, mais il n'explique
pas l'emploi de la méthode choisie (attendre les grandes images).

Bonne soirée, et j aime beaucoup les grands vins français !!


On risque d'être nombreux ! Poussez-vous quoi ! :-)


Qques exemples :
----------------
Glissement d'images :
http://ygda.free.fr/hscrollScript.htm
et la démo avec affichage grande vue :
http://ygda.free.fr/hscroll3.htm
Info-bulles :
http://www.walterzorn.com/tooltip/tooltip_e.htm
Brouillon fadding images:
http://stephane.moriaux.perso.orange.fr/truc/fad_img_slide_ie_e.htm
un autre fadder :
http://www.r-wils.fr/developpement/javascript/fading
et sa démo :
http://www.r-wils.fr/fading/fading.html
Idées de diaporama axés CSS :
http://www.cssplay.co.uk/menu/gallery.html
http://www.cssplay.co.uk/menu/magnify.html
(et jouer avec les boutons de menu "Next" "Previous")
Centrer une image sans table :
http://www.cssplay.co.uk/menu/centered.html
http://stephane.moriaux.perso.orange.fr/truc/gn/exo/00

--
Stephane Moriaux et son (moins) vieux Mac déjà dépassé

prac
Le #721220
Merci de prend note des references

---
http://philippe.chappuis.googlepages.com
---
Publicité
Poster une réponse
Anonyme