Моя разметка является простым элементом отделения с идентификатором 'загрузка'. Используя jQuery я затем загружаю список элементов изображения в это отделение:
$('#load').load('images.html', { }, function() {
$(this).onImagesLoad({
selectorCallback: function() {
....do something....
}
});
});
где images.html является списком как это:
...
Чтобы гарантировать, что все изображения загружаются полностью, я использую onImagesLoad плагин. Это, до сих пор, работает просто великолепно на всех браузерах.
Однако на IE8 (и я принимаю другие версии IE также), когда я затем выполняю итерации по img элементам, я не могу определить ширину/высоту загруженных изображений. image.context.naturalWidth и атрибуты naturalHeight, кажется, не работают.
Как я овладеваю размером изображений?
Спасибо "куча" :)
Обновление
@Simon: Это не работало над IE и повредило другие браузеры также.
@Jenechka: Если "imageDomElement" является просто другим названием переменной "изображения" в моем примере выше, то это не работает. Или что Вы подразумеваете под тем DomElement?
Если вы не изменяли размер изображения, вы можете использовать:
image.width()
и
image.height()
imageDomElement.width
imageDomElement.height
или попробуйте
imageDomElement.clientWidth
imageDomElement.clientHeight
Если вы играете с jquery, вам подойдет image.attr (width). Но почему бы вместо этого не использовать document.ready, чтобы избавиться от головной боли. .
Это очень похоже на другие ответы, но я протестировал его в IE7, так что это может быть ближе к тому, что вы хотите:
$(document).onImagesLoad({
selectorCallback: function() {
$('img').each(function(){
alert($(this).width()+', '+$(this).height());
});
}
});
См. here, это может быть не совсем то, как вы его использовали, но я не знаком с этой вещью onImagesLoad.
Вместо этого используйте следующий код
$(document).onImagesLoad({
selectorCallback: function() {
$('img').each(function(){
alert($(this)[0].clientWidth +', '+$(this)[0].clientHeight);
});
}
});