Узнаю высоту и ширину картинки, не получается достать переменые из функции
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, время: 11:52. |