Fonction Javascript reste en mémoire dans IE
Aquel
Messages postés
199
Date d'inscription
Statut
Membre
Dernière intervention
-
Aquel Messages postés 199 Date d'inscription Statut Membre Dernière intervention -
Aquel Messages postés 199 Date d'inscription Statut Membre Dernière intervention -
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.
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..
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:
- Fonction Javascript reste en mémoire dans IE
- Mémoire vive - Guide
- Fonction si et - Guide
- RAM : type, format, CAS, vitesse, tout sur la mémoire vive - Guide
- Mon pc s'allume mais lécran reste noir sans bip - Guide
- Ie tab - Télécharger - Outils pour navigateurs
4 réponses
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.
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.