[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Дождаться выполнения .load
123456
есть функция

function swImgSize()
{
var img = new Image();

img.src = 'http://site.ru/img.jpg';

$(img).load(function() {
width = this.width;
// тут всякие действия с width

return true;
});

return false;
}


функция всегда возвращает false.
как дождаться выполнения .load, а только потом продолжить выполнения функции?



sergeiss
Цитата (123456 @ 21.12.2014 - 13:54)
как дождаться выполнения .load, а только потом продолжить выполнения функции?

Так, чтобы "в лоб", никак.
Либо переносить все нужные действия в load(), либо еще как-то обходить. Задача-то в целом какая? Опиши. Сообразим, как обойти твои проблемы smile.gif

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
AllesKlar
Можно выставить глобальный флаг, а в load сбрасывать его.
И там, где нужно дождаться завершения load, через setinterval проверять состояние этого флага.

_____________
[продано копирайтерам]
123456
Цитата
Задача-то в целом какая? Опиши. Сообразим, как обойти твои проблемы


В общем пишу слайдер.

Есть функция:




swImgArr - массив с изображениями
swImgOpt.num - номер отображаемого изображения
swImgOpt['actWidth'], swImgOpt['actHeight'] - сгенерированные функцией размеры изображения


// Определяем размеры изображения и подгоняем под наши

function swImgSize()
{
var img = new Image();

img.src = swImgArr[swImgOpt.num].src;

$(img).load(function() {

var proc;
swImgOpt['actWidth'] = this.width;
swImgOpt['actHeight'] = this.height;

if (this.width > swImgOpt.width)
{
swImgOpt['actWidth'] = swImgOpt.width;

proc = (100/swImgOpt.width*this.width)-100;

swImgOpt['actHeight'] = Math.round((this.height/(100+proc))*100);
}
else if (this.height > swImgOpt.height)
{
swImgOpt['actHeight'] = swImgOpt.height;

proc = (100/swImgOpt.height*this.height)-100;

swImgOpt['actWidth'] = Math.round((this.width/(100+proc))*100);
}

if (swImgOpt['actWidth'] != 0)
return true;

});

return false;

}


и вот надо чтоб возвращался return true из .load'a
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.