2009-06-23 6 views
0

Pour voir mon problème en action, cliquez d'abord sur this link. Puis cliquez sur this one. Remarquez comment les images sont écrasées? (vous devrez peut-être cliquer sur un à travers le pager pour le voir). Je crois que c'est à cause du cache du navigateur. Voici le javascript faisant le travail:Mise à l'échelle des images avec jQuery - cache du navigateur en cours

$("#grid_slider").slider({ 
    value: 50, 
    max: 100, 
    min: 10, 
    slide: function(event, ui) { 
     $('ul#grid li').css('font-size',ui.value+"px"); 
    } 
}); 

$("ul#grid li img").each(function() { 
    var width = $(this).width()/125 + "em"; 
    var height = $(this).height()/125 + "em"; 
    $(this).css("width",width); 
    $(this).css("height",height); 
}); 

J'espère que vous êtes en mesure de reproduire le problème. Je ne sais pas ce qui doit être fait pour résoudre ce problème ... je pensais juste à sortir la fonctionnalité tous ensemble. Merci d'avance.

+0

J'ai vu votre page et ne comprends toujours pas le problème. – karim79

+0

Que voulez-vous dire par "écrasé"? Quand je charge la page, il y a un scintillement où je vois les images volumineuses et ensuite elles rétrécissent. Est-ce cela que vous voulez dire? –

+0

Oui, j'avais peur que tu ne sois pas capable de reproduire le problème. On dirait que cela fonctionne sur la première charge ... puis lorsque l'ordre des images change, certaines images deviennent "écrasées". C'est un peu difficile à expliquer je suppose ... j'espère que le problème surgit quand quelqu'un d'autre que moi visite la page. – Chaddeus

Répondre

0

Je vois le problème que vous décrivez. Je ne pense pas que ce soit le cache du navigateur, en fait, mais le temps de chargement ... J'ai vu le problème sur d'autres sites aussi, et j'ai donc formulé une opinion (informée) à ce sujet.

Il semble que le principal problème est que le navigateur est demandé la taille de l'image avant de savoir ce qui est ... Vos feux de script sur $(document).ready, mais peut-être avant $("ul#grid li img") est complètement chargé, donc pour certaines images $("ul#grid li img").width() peut-être pas connu ...

Peut-être utiliser à la place, et voir si cela aide? (Commutateurs $().each pour $().load)

$("ul#grid li img").load(function() { 
    var width = $(this).width()/125 + "em"; 
    var height = $(this).height()/125 + "em"; 
    $(this).css("width",width); 
    $(this).css("height",height); 
}) 

(complètement une supposition, mais ...)

Addendum: lecture de l'aide jQuery sur la fonction de charge tout à l'heure, il semble que cela ne soit pas exécuté pour choses déjà chargées au moment où il est appelé ... Donc, vous devrez peut-être faire les deux (appelez $().each et définir $().load) ...

+0

Hmm ... c'est logique. Va chercher à retarder le redimensionnement ... ou à coder en dur la taille de l'image au chargement. – Chaddeus

Questions connexes