Forum Programmation.web Saloperie de Javascript

Posté par  (site web personnel) .
Étiquettes : aucune
0
8
août
2005
Bonjour,

sous ce titre un brin racolleur se cache en faitun réel problème :)

Voilà 2 heures que je me bats avec un javascript qui tourne TRES BIEN sous moz, et qui foire lamentablement sous IE.

Le morceau du script en question :
var oImg = new Image();
oImg.src = '/plop.gif';
var h = oImg.height;
var w = oImg.width;


Le problème :

Si je charge plop.gif une 1ere fois en mémoire, le script tourne nickel.
Si je modifie le fichier sur le serveur, mais en lui laissant son nom 'plop.gif', IE continue d'utiliser ses ANCIENNES proportions !

J'ai tout tenté, j'ai vidé le cache, les cookies, l'historique, j'ai même rebooté la bécane. IE stock toujours les anciennes dimension de la toute 1ère image !

quelqu'un a-t-il une idée ??

Merci
  • # forcer le reload

    Posté par  (site web personnel) . Évalué à 1.

    salut,

    tu peux tenter un

    plog.gif?variablebidon="un nombre aléatoire"

    comme ça, IE ne pourra pas mettre en cache l'image, je pense
    et tu pourras continuer de le faire en javascript.


    autre solution:
    maintenant, tu peux aussi générer ton image en php et mettre des headers qui empecheront la mise en cache

    Tu dois aussi pouvoir mettre un .htaccess dans le répertoire de ton image pour paramétrer la mise en cache

  • # Saloperie de Javascript / IE

    Posté par  (site web personnel) . Évalué à 2.

    je pense que le vrai titre serait plutôt "Saloperie de IE", non ?
    Le problème n'est à mon avis pas du au javascript, qui marche bien (en tout cas chez moi ça marche, j'ai utilisé un code du genre pour faire des galleries de photo / diaporamas)

    Le problème vient à mon avis du cache d'ie (très très chiant) mais à priori dans ton cas ça n'a pas marché...
    J'ai très souvent des problèmes avec, tous plus incompréhensible les uns que les autres (la dernière fois un appel de fonction javascript créait une boucle inifinie, un vidage du cache et la fonction s'exécutait...)


    Une solution peut toute fois fonctionner, réinstaller windows à chaque modification d'image ;-)
    • [^] # Re: Saloperie de Javascript / IE

      Posté par  (site web personnel) . Évalué à 2.

      Tu as tout a fait raison pour le titre de mon post, mais j'ai généralisé car d'une manière générale j'ai HORREUR du javascript, dès que j'men sers ca part dans tous les sens, et c'est pourquoi je n'en met qu'en dernier recours.

      D'ailleurs autant c'est débuggable très facilement sous Firefox, autant sous IE c'est un bordel sans nom, les erreurs etant soit inexistantes, soit très vagues.

      Bref, j'ai tout de suite isolé le problème du cache IE comme dit dans mon post, mais pour le workaround je cherche encore (même F5 n'y change rien, d'ailleurs si un vidage du cache/cookies/temp + reboot n'y change rien, pourquoi F5 y changerait quelquechose ? :)

      J'ai donc effectivement pensé a un nom aléatoire basé sur un hash md5 de l'heure d'upload + nom du fichier comme le suggèrait le post du dessus (enfin moi c'est du j2ee, pas du php), mais ca me parait bien gruik comme solution.

      J'ai vu des algos à base de dom pouvant peut etre me contourner le problème, et j'vais p'tetre demain voir dans ce sens, car là j'crois bien que j'suis mal baré ^^
      • [^] # Re: Saloperie de Javascript / IE

        Posté par  (site web personnel) . Évalué à 1.

        ma solution proposé plus haut dans un premier préconise de juste passer un argument aléatoire au nom de la photo

        photo.gif?var1=343232324232455122

        c'était ça l'idée à la base qui pouvait être réalisé entierement en javascript

        les autres idées "gruiks" (je te l'accorde), n'étaient que des alternatives
        • [^] # Re: Saloperie de Javascript / IE

          Posté par  (site web personnel) . Évalué à 2.

          Je testerai ca demain au taf, car là j'ai pas de windows.
          Si ca marche je vais opter pour cette technique car j'ai pas envie de me prendre la tete sur un bug made in MiniDoux

          Merci.
          • [^] # Re: Saloperie de Javascript / IE

            Posté par  (site web personnel) . Évalué à 2.

            bon et bien ca marche. J'ai passé un new Date().getTime() en parametre de mon image, et le reload s'effectue bien.

            C'est quand même lamentable d'en arriver là...

            Merci
            • [^] # Re: Saloperie de Javascript / IE

              Posté par  (site web personnel) . Évalué à -1.

              c'est sûre... essaie d'expliquer ça dans tes spécifications techniques ;-)

              Et puis pour la maintenance, dans 2 ans, le p'tit gars qui tombe sur ça...Il a intéret de tomber sur une page de commentaires :)

              enfin content de t'avoir rendu service.

              D'ailleurs pour tout le monde, si vous voulez être sûre d'avoir une version non "mise en cache" d'une page, rajoutez un petite variable bidon dans l'url...

              J'ai souvent le problème dans ma boîte avec mon proxy qui cache à mort donc un petit http://linuxfr.org/journal/?toto(...) et hop une version plus fraîche.
            • [^] # Re: Saloperie de Javascript / IE

              Posté par  (site web personnel) . Évalué à 2.

              J'ai le même problème avec les sites wap pour les mobiles. Certains mobiles, tu peux leur dire que y'a pas de cache, y'en aura jamais, le cache n'a jamais existé, le cache c'est le mal, le cache ça tue les enfants, leur faire la danse des canards, ranafout', j'ai finalement dû utiliser le trick de la variable aléatoire pour lui faire comprendre la vie :(

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.