2010-08-04 5 views
2

Existe-t-il un moyen de détecter la largeur réelle d'une image dans IE7.ie7 + jquery. Changement d'image et détection de la taille

Actuellement, nous avons une Image qui change (nous ne connaissons pas les dimensions à l'avance pour le moment) et qui peut aussi être agrandie par l'utilisateur (changeant son $ ('# img'). Height()). Dans IE8 et firefox, nous pouvons appeler removeAttr on height pour réinitialiser l'image à sa taille naturelle et ensuite calculer en fonction de cela. Dans IE7, removeAttr ne fonctionne pas (http://gimp4you.eu.org/sandbox/js/test/removeAttr.html) et le réglage de la hauteur sur "" masque entièrement l'image. Donc, la détection de hauteur fonctionne bien la première fois, mais une fois que le zoom arrive en jeu, la hauteur et la largeur sont modifiées, donc l'image suivante les utilise. Je voudrais éviter de supprimer complètement la balise img et en recréer une sans la balise de hauteur, mais y a-t-il un autre moyen d'y parvenir?

Mise à jour:

Désolé, n'a pas été très clair. Le problème ne réside pas dans le stockage de la hauteur chargée, mais lorsque la balise src est mise à jour pour modifier l'image, la hauteur définie dans html/css est mémorisée - elle n'utilise pas la hauteur réelle de l'image. Je dois être capable de détecter la hauteur réelle de l'image, c'est-à-dire: si vous avez ouvert juste l'image, combien de pixels il est. Dans de meilleurs navigateurs que IE7 en utilisant removeAttr ('height'), après que l'image a été chargée, la lecture de la propriété .height() le fournit, mais removeAttr ne fonctionne pas avec IE7, donc vous avez une hauteur définie par l'image.

J'ai créé un exemple basé sur l'exemple de Russ C ici:

http://jsfiddle.net/px5yY/9/

Si vous cliquez sur 'Image 2' puis 'Cliquez sur Me' puis 'Reset', il charge correctement l'image, zoom et revient à la taille d'origine. Cependant, si vous cliquez sur "Click Me" puis sur "Image 2", puis "Reset", il reste petit (comme l'attribut height est mémorisé dans l'image rétrécie.) Je dois pouvoir accéder à la bonne taille d'image renvoyée par le premier exemple).

J'espère que c'est plus clair.

+0

Ahh, oui je vois ce que tu veux dire maintenant, hmm. –

Répondre

2

modifier: Mise à jour sur JSFiddler:

http://jsfiddle.net/px5yY/11/

+0

merci pour le lien vers jsfiddle, vraiment utile.J'ai posté une clarification à ma question. –

+0

De rien, c'est un excellent outil. –

+0

Essayez ceci maintenant: http://jsfiddle.net/px5yY/11/ Réinitialiser fixera la hauteur maintenant, mais je ne sais pas si cela est compatible avec IE7. –

1

Vous pouvez utiliser $ ('# img'). Data() pour stocker la taille d'origine.

+0

Malheureusement, nous ne connaissons pas la taille d'origine et besoin de le calculer/détecter –

+0

Est-ce que le DOM ne le sait pas au moment où vous tapez $ (document) .ready (...)? –

+0

pour la première image (c'est-à-dire avant toute manipulation de hauteur sur la balise img) - pour les images suivantes, la hauteur signalée correspond à tout ce qui a été défini via les appels height(). –

Questions connexes