Fonction Javascript reste en mémoire dans IE

Fermé
Aquel Messages postés 199 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 1 octobre 2009 - 31 mars 2008 à 18:09
Aquel Messages postés 199 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 1 octobre 2009 - 3 avril 2008 à 15:56
Bonjour tout le monde,

Il y a un truc qui m'échappe carément là. Je ne dois pas avoir bien compris le Javascript :).

Bref, j'ai une page qui affiche une photo seulement lorsque celle-ci est redimensionnée à une taille raisonnable.

Cela ne pose aucun problème lorsque j'upload mon image la première fois. Par contre, lorsque je la remplace, ça merde.

Je m'explique : Si j'insère une photo au format paysage, celle-ci garde bien son ratio d'origine. Par contre, si je l'écrase par une autre au format portrait. Celle-ci garde exactement les même dimension que l'ancienne photo (elle est donc tout aplatie).

Ce que je ne comprend vraiment pas, c'est comment la page peut garder ces informations en mémoire alors que la fonction calcule le dimension en fonction de la nouvelle photo. L'ancienne n'existant plus du tout.

Voici ma fonction de redimensionnement ainsi que son appel dans le corps de la page.

<script type="text/javascript" language="javascript">
<!--//

function redimImage(inImg, inMW, inMH, monconteneur)
{
  // Cette function recoit 3 parametres
  // inImg : Chemin relatif de l'image
  // inMW  : Largeur maximale
  // inMH  : Hauteur maximale
  var maxWidth = inMW;
  var maxHeight = inMH;
  // Declarations des variables "Nouvelle Taille"
  var dW = 0;
  var dH = 0;
  // Declaration d'un objet Image
  var oImg = new Image();
  // Enregistrement des varaibles sur l'image
  oImg.maxWidth = inMW;
  oImg.maxHeight = inMH;
  oImg.conteneur = monconteneur;
  
  oImg.onload = function(){
    /* Quand on est dans une fonction évenement, du style onload, "this"
    * correspond à l'objet qui possede la fonction. Dans notre cas, c'est l'image.
    * De même, on est pas sûr de retrouver les variables de la fonction de départ.
    *C'est pour cela que j'ai enregistré les tailles max dans l'objet l'image. */
    
    // On recupere les tailles reelles
    var h = dH = this.height;
    var w = dW = this.width;
    // Si la largeur ou la hauteur depasse la taille maximale
    if ((h >= this.maxHeight) || (w >= this.maxWidth)) {
      // Si la largeur et la hauteur depasse la taille maximale
      if ((h >= this.maxHeight) && (w >= this.maxWidth)){
        // On cherche la plus grande valeur
        if (h > w) {
        dH = this.maxHeight;
        // On recalcule la taille proportionnellement
        dW = parseInt((w * dH) / h, 10);
        } else {
        dW = this.maxWidth;
        // On recalcule la taille proportionnellement
        dH = parseInt((h * dW) / w, 10);
        }
      } else if ((h > this.maxHeight) && (w < this.maxWidth)) {
        // Si la hauteur depasse la taille maximale
        dH = this.maxHeight;
        // On recalcule la taille proportionnellement
        dW = parseInt((w * dH) / h, 10);
      } else if ((h < this.maxHeight) && (w > this.maxWidth)) {
        // Si la largeur depasse la taille maximale
        dW =this.maxWidth;
        // On recalcule la taille proportionnellement
        dH = parseInt((h * dW) / w, 10);
      }
      
      // On ecrit l'image dans le document
      // Récupération de l'objet conteneur
		var conteneur = document.getElementById(oImg.conteneur);
		// On test si l'objet a bien été récupéré
		if(conteneur)
		{
		  // On met la taille à l'objet Image
		  oImg.width = dW;
		  oImg.height = dH;
		  // On ajout l'image à la fin du conteneur
		  conteneur.appendChild(oImg);
		}
      /* Attention, vu que l'on est dans une fonction évenement, on n'est plus a
      * l'endroit ou l'on a exécuter le script. Le document.writeln risque d'écrire
      * n'importe ou, et peut même remplacer le texte du document complet. */ 
    }
  }
  // Affectation du chemin de l'image a l'objet
  oImg.src = inImg;
};

//-->
</script>



<script type="text/javascript">
<!--
redimImage('photos_etablissements/etablissement_<%=id%>.jpg', 75, 50, 'cadre_photo_petit');
//-->
</script>


J'ai pourtant vidé tous mes fichiers temporaires. Comment diable ce fichu IE garde-t-il les diemensions de l'ancienne photo.

Merki pour votre aide..
A voir également:

4 réponses

UaLShark Messages postés 191 Date d'inscription vendredi 19 mai 2006 Statut Membre Dernière intervention 21 juillet 2010 35
31 mars 2008 à 19:07
ça arrive souvent:c'est que IE garde la page dans le cache, juste effacer l'historique chaque fois
0
Aquel Messages postés 199 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 1 octobre 2009 10
31 mars 2008 à 19:21
arf, pas cool ça. tu parle bien de l'historique là, pas des fichiers temporaires?

Et si c'est le cas, il y aurait-il un moyen de brider tout ça. Genre empêcher le navigateur d'enregistrer la page mais à partir de la page elle-même et non par le navigateur ça va sans dire :)

ps : je peu pas encore tester car c'est un intranet mais je m'y colle dès demain !

Merci.
0
Aquel Messages postés 199 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 1 octobre 2009 10
1 avril 2008 à 09:38
Bon, j'ai testé en supprimant l'historique et j'ai encore le même problème.
ça me rend fouuuuuuuuuuuuuu !!!!
0
Aquel Messages postés 199 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 1 octobre 2009 10
2 avril 2008 à 14:03
petit up pour un problème restant de la science-fiction pour moi !!
0
Aquel Messages postés 199 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 1 octobre 2009 10
3 avril 2008 à 15:56
up
0