2009-12-01 3 views
1

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

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

Предположения: contentContainer уже добавляется в теле йот фраг

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"); 
    }); 
} 

Основной сНу с явно установленной высотой и шириной является то, что загружается в пульт дистанционного управления.

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

Джош

+0

какая версия ie? –

+0

IE8 фактически. Также после того, как я отправил сообщение, стоит упомянуть, что я пытаюсь сосредоточиться на экране на экране абсолютно. Работает в FF изначально и работает в IE, если я сначала выхожу оповещение, подождите полсекунды, а затем нажмите «ОК» (предположительно содержимое из запроса ajax полностью загружено, и, следовательно, IE может вычислить высоту). Я просто не знаю, где/когда я должен задать высоту, если не в обратном вызове завершения загрузки. – Josh

ответ

2

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

+0

Этот маленький трюк решил несколько проблем с IE. – Josh