Динамическое вычисление высоты Div - JQuery / AJAX - PullRequest
1 голос
/ 01 декабря 2009

Я написал небольшой плагин лайтбокса для jQuery (да, есть несколько готовых пакетов - к сожалению, дизайнеру в моей компании не нравится ни один из них).

У меня есть одна небольшая проблема - я использую .load () для загрузки динамического флэш-содержимого в div лайтбокса. Я добавляю div к DOM, предварительно устанавливаю видимость для скрытого и использую .outerHeight (true) и .outerWidth (true), чтобы получить размеры. В Internet Explorer я получаю высоту 61px (поле + 1px).

Предположение: contentContainer уже добавлен в тело dom frag

var remote = $(document.createElement("div"));
remote.css( "margin", "30px" );     
var loadURL = $(this).attr( 'href' );

if( typeof( isImage ) == "undefined" || !isImage ){
    console.log( "Loading " + loadURL );
    contentContainer.append( remote );
    remote.load( loadURL, function(){                   
        contentContainer.css( "left", (currWindow.width/2) - (contentContainer.outerWidth(true)/2) )
            .css( "top", document.body.scrollTop + (currWindow.height/2) - (contentContainer.outerHeight(true)/2) );
        overlay.css( "visibility", "visible" );
        contentContainer.css( "visibility", "visible" );
    });
}

Базовый div с явно установленными высотой и шириной - это то, что загружается в пульт.

Есть предложения? Я думаю, что это глупо, когда я пытаюсь вычислить высоту и ширину. Это работало с основным изображением, хотя ...

Josh

1 Ответ

2 голосов
/ 14 декабря 2009

Попробуйте окружить содержимое обратного вызова в window.setTimeout 0 миллисекундами. Это будет ожидать, пока текущий стек вызовов не раскрутится перед выполнением. По моему опыту, это исправляет некоторые проблемы IE с синхронизацией обратного вызова, когда обратный вызов выполняется после запуска события браузера, но до того, как IE перерисовывает окно.

...