IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Problème de Cache


Sujet :

JavaScript

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 94
    Points : 82
    Points
    82
    Par défaut Problème de Cache
    Bonjour à tous,
    J'utilise une fonction Javascript pour re-dimensionner mes images, elle fonctionne bien, à une excetpion près: avec le navigateur Firefox au premier chargment de la page cette fonction ne marche pas correctement, et dés que l'on re-actualise la page c'est bon.

    Donc a priori Firefox met en cache la fonction et l'utilise au chargement suivant de la page.

    Cependant je souhaiterai que la fonction se déclenche dés le premier chargement.

    Voici ma fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    function redimImage(inImg,maxWidth,maxHeight,inAlt,inClass){
       // inImg : Chemin relatif de l'image; inMW  : Largeur maximale; inMH   : Hauteur maximale ; alt : string alt; class: position relative 
     
     
      // Declaration d'un objet Image
      var oImg = new Image();
      // Affectation du chemin de l'image a l'objet
      oImg.src = inImg;
      var dW ;
      var dH ;
      var h = oImg.height;
      var w = oImg.width;
      // Si la largeur ou la hauteur depasse la taille maximale
      if ((h >= maxHeight) || (w >= maxWidth)) {
        // Si la largeur et la hauteur depasse la taille maximale
        if ((h >= maxHeight) && (w >= maxWidth)) {
          // On cherche la plus grande valeur
          if (h > w) {
            dH = maxHeight;
            dW = parseInt((w * dH) / h, 10);
          } else {
            dW = maxWidth;
            dH = parseInt((h * dW) / w, 10);
          }
        } else if ((h > maxHeight) && (w < maxWidth)) {
          // Si la hauteur depasse la taille maximale
          dH = maxHeight;
          dW = parseInt((w * dH) / h, 10);
        } else if ((h < maxHeight) && (w > maxWidth)) {
          // Si la largeur depasse la taille maximale
          dW = maxWidth;
          dH = parseInt((h * dW) / w, 10);
        }
     
      }else {
      	dW = w;
      	dH = h;
      }
     
        document.write('<img src="' + inImg + '" width="' + dW + '" height="' + dH + '" border="1" alt="'+ inAlt + '" class=" ' + inClass + '" /> ');
    }

    Ma question est donc, comment faire pour forcer le bon fonctionnement du script dès le premier chargement de la page, ou alors où est l"erreur dans mon script ?


    Le cas où ça ne fonctionne pas correctement, les valeurs retournées pour width et height sont "0", les autre résultats sont corrects.


    Je développe en Jsp, l'appel de la page est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <script language="javascript" type="text/javascript"><!--//--><![CDATA[//><!--
    						                    		redimImage('<bean:write name='image' property='downloadUrl'/>', <%=getResourceBundle("box.image.width","75",jData)%>, <%=getResourceBundle("box.image.height","75",jData)%>, '<bean:write name='imageAlt' filter='true'/>', 'float-right' );
    												//--><!]]></script>

  2. #2
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 860
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 860
    Points : 3 445
    Points
    3 445
    Par défaut
    Salut,

    Si ta fonction n'est pas repérée au premier coup, c'est qu'elle est sûrement mal placée;

    Où l'as-tu définie ? Dans le <head> ? Dans un js à part ?

    a+

  3. #3
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 94
    Points : 82
    Points
    82
    Par défaut
    Salut,
    Merci, de cette rapide intervention.
    Elle est definie dans le <Head>. Et j'ai également essayé les 2 solutions, soit le code directement dans le head et aussi dans un fichier js séparé.
    Mais le problèeme est le même.

  4. #4
    Membre averti Avatar de NeHuS
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 343
    Points : 316
    Points
    316
    Par défaut
    Salut la & ici

    Pourquoi ne pas faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <body onload='redimimage(".....","...","...")'>

  5. #5
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 94
    Points : 82
    Points
    82
    Par défaut
    Salut,

    C'est ce que j'étais justement en train d'essayer, mais là il ne trouve plus du tout la fonction (je dois pas bien faire), voici mon appel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    div onload="redimImage('/jahia/webdav/site/minefitest/users/admin/public/alumni.jpg', '111', '68', '', 'float-top')"  >
    						                    </div>

  6. #6
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 860
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 860
    Points : 3 445
    Points
    3 445
    Par défaut
    Salut,

    le onLoad est un évènement de <body>.

    Question : tu veux que ton script se lance dès l'affichage de la page ? Où c'est via une action utilisateur ?

    A+

  7. #7
    Membre averti Avatar de NeHuS
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 343
    Points : 316
    Points
    316
    Par défaut
    effectivment tu ne fais pas bien

    Le tag div n'accepte pas un tel attribut

  8. #8
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 94
    Points : 82
    Points
    82
    Par défaut
    ok, là c'est sure que ça ne pouvait pas marcher.

    Je travaille sur un site web dynamique, ce que je souhaite donc c'est que dés qu on affiche image, plutot que de l'afficher à sa taille, on l'afficher avec des contraintes.

    A chaque fois qu'on affiche une image, je passe par une fonction JS.

    Peut-être que j'en demande trop....

  9. #9
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 860
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 860
    Points : 3 445
    Points
    3 445
    Par défaut
    Hmm, quel type de contrainte ?

    Ne pourrais-tu pas faire cela avec le langage d'application de ton serveur ( php ? )

    Si ton problème est de redimensionner une image pour qu'elle tienne dans une vignette de largeur/hauteur fixe, il existe par exemple Imagick, accessible en PHP, qui redimensionne ton image exactement comme tu le souhaites;

    Et puis le mieux, c'est de directement avoir tes vignettes d'un coté, et tes images de l'autre, ainsi, tu gagnes en bande passante; Car redimensionner ton image en JavaScript charge quand même l'image en entier, c'est vraiment pas optimisé.

    A+

  10. #10
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 94
    Points : 82
    Points
    82
    Par défaut
    Je crois que je vais devoir faire comme tu dis.

    Je travaille dans en environnemnt Tomcat (JSP + JAva), en java c'est faisable, cela va prendre un peu plus de temps.

    Merci pour vos réponses.

Discussions similaires

  1. problème de cache lors du chargement d'applet
    Par ellocin dans le forum Applets
    Réponses: 4
    Dernier message: 05/04/2007, 12h31
  2. [Tomcat 5.5.16] Problème de cache
    Par vallica dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 29/05/2006, 14h59
  3. Problème Mémoire Cache
    Par Ryadus dans le forum Ordinateurs
    Réponses: 6
    Dernier message: 13/12/2005, 16h21
  4. Problème de cache avec Oracle 8i
    Par lper dans le forum Bases de données
    Réponses: 3
    Dernier message: 08/11/2004, 16h50
  5. Problème de cache avec oracle 8 i
    Par lper dans le forum Oracle
    Réponses: 11
    Dernier message: 08/11/2004, 16h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo