Je suis en face d'un soucis pour le moins surprenant.
En effet, j'utilise l'objet Javascript Image pour précharger une image,
et récupérer ses dimensions :
var Image img = new Image();
img.src='toto.gif';
iomg.onload=imageLoad;
function imageLoad()
{
alert("Image chargée : " + img.width + "x" + img.height + " pixels");
}
Tout se passe bien tant que l'image sur mon serveur n'est pas modifiée.
Or, si j'utilise IE6 et si je remplace l'image du serveur par une autre
d'une taille différente, les dimensions que je récupère dans l'objet
Image Javascript sont toujours celles de l'image précédente ! La
nouvelle image a pourtant été correctement téléchargée depuis le serveur
puisque la page affiche bien la nouvelle image. De plus, le pb
n'apparaît pas sous Firefox.
Est-ce un bug du cache d'IE ? Ai-je loupé quelque chose ?
var maintenant= new Date() img.src = 'toto.gif?'+maintenant;
Un poil plus "propre" : img.src = '/images/logoGros.gif?'+maintenant.getTime();
-- ______ Francis (enlever .NIPUBNISOUMIS) Algèbre gouvernementale : 12 mi-nistres, ça fait 6 nistres
JLM
var maintenant= new Date() img.src = 'toto.gif?'+maintenant;
Un poil plus "propre" : img.src = '/images/logoGros.gif?'+maintenant.getTime();
Oui, effectivement avec un paramètre changeant en plus, ça fonctionne, mais au détriment de l'utilisation du cache. Etant donné que les images que je charge font potentiellement partie d'un browser d'images, j'aimerais garder le bénéfice du cache pour accélérer l'affichage lors du retour à une image déjà vue. Le cache d'IE est-il aussi mal conçu que ça ?
J'ai essayé d'utiliser la propriété complete de l'objet Javascript Image, et je me suis rendu qu'elle était toujours à false avec IE (alors qu'elle est correctement positionnée à true par Firefox après son chargement). Est-ce normal ?
Merci pour les réponses en tout cas ..
Jean-Luc
var maintenant= new Date()
img.src = 'toto.gif?'+maintenant;
Un poil plus "propre" :
img.src = '/images/logoGros.gif?'+maintenant.getTime();
Oui, effectivement avec un paramètre changeant en plus, ça fonctionne,
mais au détriment de l'utilisation du cache. Etant donné que les images
que je charge font potentiellement partie d'un browser d'images,
j'aimerais garder le bénéfice du cache pour accélérer l'affichage lors
du retour à une image déjà vue. Le cache d'IE est-il aussi mal conçu que
ça ?
J'ai essayé d'utiliser la propriété complete de l'objet Javascript
Image, et je me suis rendu qu'elle était toujours à false avec IE (alors
qu'elle est correctement positionnée à true par Firefox après son
chargement). Est-ce normal ?
var maintenant= new Date() img.src = 'toto.gif?'+maintenant;
Un poil plus "propre" : img.src = '/images/logoGros.gif?'+maintenant.getTime();
Oui, effectivement avec un paramètre changeant en plus, ça fonctionne, mais au détriment de l'utilisation du cache. Etant donné que les images que je charge font potentiellement partie d'un browser d'images, j'aimerais garder le bénéfice du cache pour accélérer l'affichage lors du retour à une image déjà vue. Le cache d'IE est-il aussi mal conçu que ça ?
J'ai essayé d'utiliser la propriété complete de l'objet Javascript Image, et je me suis rendu qu'elle était toujours à false avec IE (alors qu'elle est correctement positionnée à true par Firefox après son chargement). Est-ce normal ?
Oui, effectivement avec un paramètre changeant en plus, ça fonctionne, mais au détriment de l'utilisation du cache. Etant donné que les images que je charge font potentiellement partie d'un browser d'images, j'aimerais garder le bénéfice du cache pour accélérer l'affichage lors du retour à une image déjà vue. Le cache d'IE est-il aussi mal conçu que ça ?
Je ne connais pas IE Windows, mais il ne semble pas être le seul à "oublier" de vérifier la corrélation de l'image dans son cache avec celle sur le site (plus particulièrement si les images sont déclarées dans des css).
J'ai essayé d'utiliser la propriété complete de l'objet Javascript Image, et je me suis rendu qu'elle était toujours à false avec IE (alors qu'elle est correctement positionnée à true par Firefox après son chargement). Est-ce normal ?
Je n'ai jamais réussi à utiliser ce complete de manière fiable
Merci pour les réponses en tout cas ..
Si vraiment c'est pour mettre deS imageS en cache et les ré-utiliser, à mon idée il vaudrait mieux différencier leurs noms pour chacune.
<script type="text/javascript"> var I = new Array(); var chemin = 'photos/serie_1/'; var nb = 12; var i = 0; function affiche() { if(i == nb) i = 0; if(document.images) { document.images['visuel'].src = I[i].src; i++ } } function chargeImg() { if(i<nb) { I[i] = new Image(); I[i].onload = chargeImg; I[i].src = chemin+i+'.jpg'; i++; } else { alert('ok'); i=0; truc = setInterval('affiche()',200); } } window.onload = chargeImg; </script>
Oui, effectivement avec un paramètre changeant en plus, ça fonctionne,
mais au détriment de l'utilisation du cache. Etant donné que les images
que je charge font potentiellement partie d'un browser d'images,
j'aimerais garder le bénéfice du cache pour accélérer l'affichage lors
du retour à une image déjà vue. Le cache d'IE est-il aussi mal conçu que
ça ?
Je ne connais pas IE Windows, mais il ne semble pas être le seul à
"oublier" de vérifier la corrélation de l'image dans son cache avec
celle sur le site (plus particulièrement si les images sont déclarées
dans des css).
J'ai essayé d'utiliser la propriété complete de l'objet Javascript
Image, et je me suis rendu qu'elle était toujours à false avec IE (alors
qu'elle est correctement positionnée à true par Firefox après son
chargement). Est-ce normal ?
Je n'ai jamais réussi à utiliser ce complete de manière fiable
Merci pour les réponses en tout cas ..
Si vraiment c'est pour mettre deS imageS en cache et les ré-utiliser,
à mon idée il vaudrait mieux différencier leurs noms pour chacune.
<script type="text/javascript">
var I = new Array();
var chemin = 'photos/serie_1/';
var nb = 12;
var i = 0;
function affiche() {
if(i == nb) i = 0;
if(document.images) {
document.images['visuel'].src = I[i].src;
i++
}
}
function chargeImg() {
if(i<nb) {
I[i] = new Image();
I[i].onload = chargeImg;
I[i].src = chemin+i+'.jpg';
i++;
}
else {
alert('ok');
i=0;
truc = setInterval('affiche()',200);
}
}
window.onload = chargeImg;
</script>
Oui, effectivement avec un paramètre changeant en plus, ça fonctionne, mais au détriment de l'utilisation du cache. Etant donné que les images que je charge font potentiellement partie d'un browser d'images, j'aimerais garder le bénéfice du cache pour accélérer l'affichage lors du retour à une image déjà vue. Le cache d'IE est-il aussi mal conçu que ça ?
Je ne connais pas IE Windows, mais il ne semble pas être le seul à "oublier" de vérifier la corrélation de l'image dans son cache avec celle sur le site (plus particulièrement si les images sont déclarées dans des css).
J'ai essayé d'utiliser la propriété complete de l'objet Javascript Image, et je me suis rendu qu'elle était toujours à false avec IE (alors qu'elle est correctement positionnée à true par Firefox après son chargement). Est-ce normal ?
Je n'ai jamais réussi à utiliser ce complete de manière fiable
Merci pour les réponses en tout cas ..
Si vraiment c'est pour mettre deS imageS en cache et les ré-utiliser, à mon idée il vaudrait mieux différencier leurs noms pour chacune.
<script type="text/javascript"> var I = new Array(); var chemin = 'photos/serie_1/'; var nb = 12; var i = 0; function affiche() { if(i == nb) i = 0; if(document.images) { document.images['visuel'].src = I[i].src; i++ } } function chargeImg() { if(i<nb) { I[i] = new Image(); I[i].onload = chargeImg; I[i].src = chemin+i+'.jpg'; i++; } else { alert('ok'); i=0; truc = setInterval('affiche()',200); } } window.onload = chargeImg; </script>