Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

encore pb de chargement d'images

3 réponses
Avatar
snide
Hello

Pour un diaporama, afin d'éviter le chargement des images à chaque cycle,
j'utilise un tableau d'images supposé faire tampon.
Le principe fonctionne bien en local (sur mon PC ou depuis une clé USB). les
images sont chargées une fois, puis sont lues en mémoire.
la même chose depuis le site fait recharger à chaque fois les images sans
tenir compte du
préchargement.
où est le schmilblik ?

je charge les images par
cache_images[i]=new Image();
cache_images[i].src=photos[i];

où photos[] est la liste des noms des images, par exemple
photos=new Array('photo1.jpg' , 'photo2.jpg' ,..etc...);

cache images est déclaré par
var cache_images=new Array();

ensuite j'affiche par
document.images[nom_du_champ_img].src = (cache_images[i]).src

Ce qui m'agace est la différence entre un fonctionnement local et sur le
site.
Que le principe ne marche pas pour une raison d'écriture ou autre, OK, mais
pourquoi cette différence ?

Merci pour toute aide

Denis

3 réponses

Avatar
ASM
snide wrote:
Hello

Pour un diaporama, afin d'éviter le chargement des images à chaque cycle,
j'utilise un tableau d'images supposé faire tampon.
Le principe fonctionne bien en local (sur mon PC ou depuis une clé USB). les
images sont chargées une fois, puis sont lues en mémoire.


tu as l'ADSL ?

la même chose depuis le site fait recharger à chaque fois les images sans
tenir compte du préchargement.
où est le schmilblik ?


y a pas de schmilblik, elles se rechargent certainement en local aussi.

je charge les images par
var cache_images=new Array();
cache_images[i]=new Image();
cache_images[i].src=photos[i];

photos=new Array('photo1.jpg' , 'photo2.jpg' ,..etc...);

ensuite j'affiche par
document.images[nom_du_champ_img].src = (cache_images[i]).src


document.images['nom_du_champ_img'].src = cache_images[i].src;
ou
document.images['nom_du_champ_img'].src = eval(cache_images[i]+'.src');

ou mieux encore :
document.images['nom_du_champ_img'].src=document.images[cache_images[i]].src;
ou
with(document.images){ nom_du_champ_img.src = cache_images[i].src;}

Ce qui m'agace est la différence entre un fonctionnement local et sur le
site.
Que le principe ne marche pas pour une raison d'écriture ou autre, OK, mais
pourquoi cette différence ?


parceque par ton erreur d'ecriture tu ne t'adresses pas au cache ?
(attention aux quotes (') et aux parentheses)

nota :
de plus çà devrait mieux fonctionner au 2ième passage
(il faut laisser le temps que les images se chargent dans le cache
le javascript n'est pas le Saint Esprit)


--
Stephane Moriaux et son [moins] vieux Mac

Avatar
snide
tu as l'ADSL ?
non, quel rapport ?




Y a pas de schmilblik, elles se rechargent certainement en local aussi.



Non. Je teste depuis une clé USB qui a une led.
A la moindre lecture, la led s'allume. On voit nettement le chargement au
1er passage, puis la led reste éteinte.
sur la barre d'état de IE, le message téléchargement ... s'affiche au 1er
cycle, et plus ensuite.



document.images['nom_du_champ_img'].src = cache_images[i].src;



pas de différence si parenthèses (effectivement inutiles)

document.images['nom_du_champ_img'].src = eval(cache_images[i]+'.src');



erreur à l'exécution. "object est indéfini". Le eval ne marche pas

document.images['nom_du_champ_img'].src=document.images[cache_images[i]].s
rc;



erreur à l'exécution : "document.image[....].src a la valeur null"
Les images créées par new image ne font pas partie de la collection
document.images ! Cette syntaxe est erronée.

par ton erreur d'ecriture tu ne t'adresses pas au cache ?



Possible, mais en local je m'adresse bien au cache.
le JS est de plus bien exécuté sur le PC utilisateur, pas sur le serveur,
pour lequel une différence de majuscule minuscule peut avoir plus
d'importance.

En détaillant et en ajoutant un alert(cache_images[num_liste][i].src) à la
création des images, on voit que
- la création new image ne se fait bien qu'une fois au 1er passage.
- le src vaut "file://.. chemin..nom_image.jpg" en local, mais
http://www.nom site/nom_image.jpg sur le site
- la lecture dans cache_images provoque le téléchargement. C'est comme si le
cache ne servait qu'à lire le nom du fichier, qui est chargé ensuite.

donc ?? :-[


Denis


Avatar
ASM
snide wrote:
tu as l'ADSL ?



non, quel rapport ?


le rapport est qu'en RTC c'est lent et tu vois mieux ce qu'il se passe

sinon, tu essaies depuis une disquette

Y a pas de schmilblik, elles se rechargent certainement en local aussi.




Non. Je teste depuis une clé USB qui a une led.
A la moindre lecture, la led s'allume. On voit nettement le chargement au
1er passage, puis la led reste éteinte.
sur la barre d'état de IE, le message téléchargement ... s'affiche au 1er
cycle, et plus ensuite.


oui, parceque çà va très vite, un simple passage suffit

[snip]

- la lecture dans cache_images provoque le téléchargement. C'est comme si le
cache ne servait qu'à lire le nom du fichier, qui est chargé ensuite.


toutafé, mais une fois enfin chargées par la boucle
après çà ne recharge plus (normalement ...)
De même, avec cache activé, la visite suivante ne devrait pas recharger
les images, bien que des appels à celles-ci seront lancés (des fois
qu'elles auraient été modififiées depuis dernière visite)

donc ?? :-[


il faut faire une boucle forçant le chargement
voir ici où j'ai une petite anim (genre logo) en JS
Les images y sont post-chargées
(activité de la barre d'état après chargement de la page)
http://perso.wanado.fr/stephane.moriaux/internet/web_vrml/




--
Stephane Moriaux et son [moins] vieux Mac