使用jQuery计算高度在Firefox和Chrome中有所不同

时间:2011-03-05 18:24:14

标签: jquery firefox height css

我有一个问题已经被问到here,但那里提供的解决方案没有用。问题是我使用jQuery height()函数返回div的高度。它在Firefox中运行良好,但在Chrome中返回的值小于300px ......

您可以看到此错误here的示例。虽然我必须说它是希伯来语。虽然这不应该太重要......

有没有人曾经发生过这种情况?这是计算高度的代码:

var heightLeftCol = $('#leftCol').height();
var sidebarHeight = $('#sidebar').height();
var minHeight = heightLeftCol > sidebarHeight ? heightLeftCol : sidebarHeight; 
$('#postArea').css('min-height', minHeight+100);
编辑:这个问题未修复,但以我不喜欢的方式解决,但它现在会做。这是我提出的“解决方案”:

if (jQuery.browser.safari) {
    $('#postArea').css('min-height', minHeight+400 + 'px');
}
else {
    $('#postArea').css('min-height', minHeight+100 + 'px');
}

由于Safari和Chrome都在WebKit上运行,browser.safari实际上也选择了Chrome。我绝对不认为这是最佳解决方案。

谢谢! 阿米特

3 个答案:

答案 0 :(得分:16)

在Chrome中,div的高度不包括300像素高图像“sheli.jpg”的高度,因为它未在html或css中的任何位置指定。如果您在< img>中指定height="300"标签或height: 300px;作为其风格的一部分,它将起作用。

答案 1 :(得分:8)

如果因为您当时的图片尚未加载,则高度为0.这就解释了Chrome中的高度不足。要解决此问题,请将设置高度的代码放在jQuery(window).load()内,如下所示:

jQuery(window).load(function(){
     jQuery("#div1").css("height", jQuery("#div2").height());
});

答案 2 :(得分:5)

根据讨论,Justin和我在上面的评论中将jQuery代码包装在$(window).load()中将允许此代码在图像完全加载后正确执行。