Функция обработки Safari / Webkit слишком рано после ajax: завершено - PullRequest
1 голос
/ 21 февраля 2011

У меня есть вызов ajax, который я делаю, и он работает просто отлично.Дело в том, что мне нужны размеры изображения.я не могу объявить эти размеры в HTML, потому что они динамически изменяются.Теперь, если я вызываю функцию во время моего полного состояния, для извлечения этих измерений браузеры WebKit выдают 0, а FF выводит правильные размеры.*

есть предложения по этому поводу?я попытался

if (jQuery.browser.safari && document.readyState != 'complete')

, но состояние документа вообще не меняется, как только DOM готов ..

спасибо.

Ответы [ 2 ]

2 голосов
/ 26 февраля 2011

еще один пример того, как позволить jquery ждать при загрузке - jQuery.active.

- это переменная, которая выплевывает 1, если jquery все еще загружается, и 0, если она завершена.

1 голос
/ 22 февраля 2011

хорошо. после небольшого взлома я попробовал следующее решение, которое работает.

$.ajax({
        url: event.path,
        cache: false,
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            handler(XMLHttpRequest.responseText);
        },
        success: function(data, textStatus, XMLHttpRequest) {
            handler(data);
        },
        complete: function() {
            var imgCount = $("#project .content").find("img");
            if (imgCount.length > 0) {
                if ($("#project .content img:last").width() == 0) {
                    setTimeout( arguments.callee, 100 );
                    return;
                }
            //fancyFunction();
            }
        }
    });

так что я сделал: ищу изображения в моей целевой div. если вокруг есть изображения, и если ширина моего последнего изображения равна нулю: повторите проверку на ширину через 100 мс. иначе продолжай с чем угодно ..

...