2009-12-01 103 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