Mon balisage est un élément div en div avec ID 'Charge'. Utilisation de jQuery, je charge ensuite une liste d'éléments d'image dans cette div: où images.html est une liste comme celle-ci: p> Pour que toutes les images soient chargées complètement, j'utilise le Plugin Onimagesload . Ceci, jusqu'à présent, fonctionne parfaitement sur tous les navigateurs. P> Cependant, sur IE8 (et j'assume d'autres versions de IE aussi) lorsque j'ai ensuite itérer sur les éléments IMG, je ne parviens pas à déterminer la largeur / Hauteur des images chargées. L'image.context.naturalWidth et NaturalHeight Attributs ne semblent pas fonctionner. P> Comment puis-je obtenir une prise de la dimension des images? P> Merci Teasps :) P> @simon: cela ne fonctionnait pas sur IE, et a également cassé les autres navigateurs. P> @jenechka: Si "ImageDomElement "Est juste un autre nom pour la variable" image "dans mon exemple ci-dessus, alors cela ne fonctionne pas. Ou qu'entendez-vous par ce domautement? P> p>
7 Réponses :
Si vous n'avez pas redimensionné l'image, vous pouvez utiliser:
image.height()
imageDomElement.clientWidth imageDomElement.clientHeight
Si vous jouez avec jQuery, alors image.attr (largeur) devrait faire le tour Mais pourquoi ne pas utiliser le document.ready plutôt, pourrait vous donner moins de frastiquée. . p>
Ceci est assez similaire aux autres réponses, mais je l'ai testé dans IE7, il peut donc être plus proche de ce que vous voulez: voir ici , cela peut ne pas être exactement comment vous l'utilisiez, mais je ne connais pas ce truc sur Inimagesload. P> P> P> P> P >
Merci pour le lien, mais le code ne reflète pas le scénario. Je n'ai pas incorporé les éléments dans
Utilisez le code suivant à la place
$(document).onImagesLoad({ selectorCallback: function() { $('img').each(function(){ alert($(this)[0].clientWidth +', '+$(this)[0].clientHeight); }); } });
Y a-t-il une raison d'utiliser $ (ceci) [0] .ClientWidth au lieu de cela.clientwidth?
Consultez mon commentaire ci-dessus pour le poste initial de Ryley.
Cela fait un moment, mais j'ai enfin trouvé un peu de temps pour bricoler de nouveau. Les problèmes ci-dessus sont toujours là, mais voici ce que je pense continuer.
Lorsque je charge les images initiales, le fichier est chargé et les objets d'image sont générés. Mais il semble que les attributs ne soient pas encore corrects et qu'ils ne seront pas tant que l'image est effectivement ajoutée à la DOM du site et rendu. Un div / image sur Masquer () sur IE n'a aucune information de dimension que ce soit, sur Safari, il existe des informations disponibles. Par exemple, sans ajouter la DIV suivante Anywhere P>
var newimg = img.clone()
largeur () = 0 code>, li>
-
attr ("largeur") = 600 code>, li>
-
CSS ("largeur") = "" code> et li>
-
img [0] .ClientWidth = 0 code>. li>
ul> c'est sur safari; sur IE c'est la même chose sauf attr ("largeur") = 0 code> et CSS ("largeur") = "auto" code>. Maintenant, je ne peux pas utiliser cela, et c'est ce qui a cassé mon script et pourquoi j'ai posté ma question initiale. Cependant, le moment où j'appuie ce DIV et que cela a rendu, toutes les valeurs correctes apparaissent dans l'objet image. P> J'écris une petite galerie Thinghie, qui montre toutes les images que j'ai dans cette seconde. fichier html que je charge; Cette galerie est toutefois calcule et place les vignettes et prépare les images qu'il montre en pleine résolution. Pour que ce look soit ok, je voulais fondamentalement créer la totalité de la chose cachée, puis la fondue. Hélas, il semble que toute cette idée ne panne pas. Un ami a suggéré de tout charger dans un minuscule iframe à gauche où ce n'est pas visible et travaille avec ça. C'est peut-être la voie à suivre. P>
Une autre chose que j'ai remarquée et que cela semble être très étroitement lié au problème de la charge susmentionnée est clone (). Il semble que si une image soit rendue, un p> xxx pré> génère le même objet d'image "vide" que je dois faire face ci-dessus. Même lorsque l'image d'origine est visible et contient tous les attributs droits, son clone ne le fait pas. P>
En ce moment, je ne vois pas d'autre manière que de repenser et de réécrire des parties de ma galerie. P> p>
Qu'en est-il?