[javascript] changement d'image sur page Web ?

changement d'image sur page Web ? [javascript] - Programmation

Marsh Posté le 12-10-2001 à 10:27:39    

Actuellement j'utilise un code de ce genre (en supposant une image qui s'appelle "onpage" sur mon document):
 

Code :
  1. <script>
  2. function LoadImages() {
  3.    img1   = new Image();
  4.    img2   = new Image();
  5.    img1.src = 'monimage1.gif';
  6.    img2.src = 'monimage2.gif';
  7. }
  8. LoadImages();
  9. function ChangeImage(state) {
  10.    if (state == 'on') {
  11.       document ['onpage'].src = img1.src;
  12.    } else {
  13.       document ['onpage'].src = img2.src;
  14.    }
  15. }


 
Le problème que j'ai avec cette méthode c'est que à chaque changement d'image il effectue une requête HTTP pour verifier si il existe une version plus récente du fichier.
 
En supposant une connexion merdique le changement d'image ne se fait pas immédiatement et même il peut arriver que l'image ne soit pas affichée du tout en cas de perte de paquets.
 
Donc la question est : quelle méthode utilisez-vous pour changer d'image sur une page Web ?

Reply

Marsh Posté le 12-10-2001 à 10:27:39   

Reply

Marsh Posté le 12-10-2001 à 16:24:34    

Effectivement j'ai le meme probleme : comment empecher le navigateur d'aller chercher une nouvelle version à chaque fois ?

Reply

Marsh Posté le 14-10-2001 à 18:31:40    

UP!!

Reply

Marsh Posté le 14-10-2001 à 18:33:01    

Moi qui était tout content d'avoir une réponse ! :) :crazy:

Reply

Marsh Posté le 14-10-2001 à 19:13:00    

c'est bizarre parce que j'ai quasiment le même code (new Image; au lieu de new Image();) et je n'ai pas ce problème ... tu as une page online qq part qui duplique le problème ? ou un copié collé sous la main ?

Reply

Marsh Posté le 15-10-2001 à 09:38:15    

youdontcare a écrit a écrit :

c'est bizarre parce que j'ai quasiment le même code (new Image; au lieu de new Image();) et je n'ai pas ce problème ... tu as une page online qq part qui duplique le problème ? ou un copié collé sous la main ?  




 
Ca ne change rien... entre

Code :
  1. new Image();

et

Code :
  1. new Image;

c'est du pareil au même.
 
La question est surtout : quand tu passe au dessus de ton image, est-ce que ton navigateur effectue une requête http vers ton serveur Web (tu peux le voir en observant ton modem, en observant les icônes de connexion réseau dans la barre des tâches (windows 2000) ou encore en sniffant les paquets réseaux.
 
En fait ce que je souhaiterai c'est de :
1) (pré)charger l'image en mémoire
2) utiliser mes images chargées en mémoire
 
C'est très con, mais le browser effectue à chaque fois une requête vers le serveur Web.

Reply

Marsh Posté le 15-10-2001 à 10:10:42    

ok. je précise car un truc genre new Image/new Image() me faisait des bugs sous un certain compilo c++. bref ... :D
 
pour voir les requêtes web, j'ai un proxy (gratos en plus, www.naviscope.com ). et il ne fait absolument aucune requête lors du flip de l'image.
 
c'est pourquoi je te demandais si tu n'as pas une page d'exemple online ... on sinon, tu colles le code ici.
 
//
 
ok. je vois peut-être pourquoi. je charge mes images dans le scope global, c'est à dire entre deux <script> et </script>.
 
tu le fais dans une fonction, sans déclarer img1 et img2 en global dans ton code d'exemple.  
 
t'as essayé  
 
var img1;
var img2;
 
function loadImage()
{
  img1 = new Image();
  img1.src = '....';
}
 
:??:

Reply

Marsh Posté le 15-10-2001 à 10:14:17    

J'avoue ne pa avoir essayé (honte à moi)... d'ailleur je me demande comment il accepte d'utiliser des objets qui ont un scope local de manière globale (dans un monde parfait il aurait du m'envoyer pêter depuis un moment :)
 
Bon je vais déjà déclarer mes objets globalement, ca risque d'aider :o)
 
Je te tiens au courant ;)

Reply

Marsh Posté le 15-10-2001 à 10:25:38    

BOn alors ca ne change rien Image(); et Image; sont interprêtés de la même manière et la déclaration globale des variables n'a strictement rien changé au problème. Il effectue toujours une requête HTTP à destination du serveur Web...
 
Bon je crois que je ne vais pas me casser la tête plus longtemps, car ca fonctionne bien si il n'y a pas de problèmes réseaux.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed