2009-12-01 78 views
1

我已經寫了一個jQuery小的燈箱插件(是的,有幾個現成的包 - 不幸的是,我的公司設計師不喜歡其中任何一個)。動態div高度計算 - jQuery/AJAX

我有一個小問題 - 我正在使用.load()將動態Flash內容加載到lightbox div中。我將div附加到DOM,將隱藏的可見性預設爲,並使用.outerHeight(true)和.outerWidth(true)來獲取尺寸。在Internet Explorer中,我獲得了61px(margin + 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"); 
    }); 
} 

的基本分度,明確設置的高度和寬度是什麼被加載到遠程。

有什麼建議嗎?當我試圖計算高度和寬度時,我認爲它很愚蠢。它的工作雖然與基本視頻...

喬希

+0

哪個版本的ie?其實IE8實際上是 – 2009-12-01 01:58:49

+0

。 另外,我發佈後,值得一提的是,我試圖將屏幕中心絕對中心。如果我先彈出一個警告,等待半秒,然後點擊好(大概ajax請求的內容是完全加載的,因此IE可以計算高度),本地工作在FF和IE的作品。如果不是在加載完成回調中,我只是不確定我應該詢問高度的位置/時間。 – Josh 2009-12-01 02:12:19

回答

2

嘗試用0毫秒周圍回調的內容在window.setTimeout。這將等待當前調用堆棧在執行之前展開。根據我的經驗,當瀏覽器事件觸發後,但在IE重新繪製窗口之前執行回調時,這會修復一些帶回調時間的IE問題。

+0

這個小竅門已經解決了我在IE中遇到的一些問題。 – Josh 2010-03-29 03:00:54