Узнаю высоту и ширину картинки, не получается достать переменые из функции
var pic_real_width_0, pic_real_height_0;
var img = $(this).children('img:eq(0)');
$("<img/>")
.attr("src", $(img).attr("src"))
.load(function() {
pic_real_width_0 = this.width; console.log('pic_real_width [0] = '+pic_real_width_0);
pic_real_height_0 = this.height; console.log('pic_real_height [0]= '+pic_real_height_0);
});
console.log('pic_real_width [0] = '+pic_real_width_0);
Подскажите почему не работает - не вынимает значения выше функции? Как сделать чтоб заработало? Может функцией сохранить левый параметр на странице, а потом его считать? (изврат, но что делать) |
VitAl2013,
на всякий случай строка 9 сработает раньше строки 5 да и строки 4 и 5 лучше поменять местами |
так и нормально что 9 позднее 5. В 5 происходит загрузка изображение, в 6 и 7 образмеривание и вывод в консоль не покидая функции, а 9 по задумке затем выводит в консоль значение уже за пределами функции. (вот если наоборот 5 (загрузка) произойдёт позже 9, то вот... надо подумать - может тут собака порылась. А если поменять 4 и 5 местами то src присвоиться после загрузки - нечего будет загружать - пустая коробка будет создана и загружена, и только потом произойдёт смена src - коробка поймёт что в себя грузить.
|
Цитата:
исправил строка 9 сработает раньше строки 5 5 строка может и не сработать совсем |
Спасибо за помощь. Нашёл элегантное решение в виде методов:
(function($){
var
props = ['Width', 'Height'],
prop;
while (prop = props.pop()) {
(function (natural, prop) {
$.fn[natural] = (natural in new Image()) ?
function () {
return this[0][natural];
} :
function () {
var
node = this[0],
img,
value;
if (node.tagName.toLowerCase() === 'img') {
img = new Image();
img.src = node.src,
value = img[prop];
}
return value;
};
}('natural' + prop, prop.toLowerCase()));
}
}(jQuery));
Используется потом так:
nWidth = $('img#example').naturalWidth(),
nHeight = $('img#example').naturalHeight();
Уже опробовал - работает. Взял отсюда: http://www.jacklmoore.com/notes/natu...lheight-in-ie/ |
| Часовой пояс GMT +3, время: 13:13. |