如何在没有滚动条的情况下获得IE的宽度

时间:2009-10-20 07:52:32

标签: javascript jquery internet-explorer

我使用以下行获取浏览器的宽度:

$(document).width()

然后我将元素设置为此宽度。

但在IE中,出现水平滚动条(宽度大于浏览器大小 - 我认为这是因为它计算垂直滚动条的宽度)。我使用html 4.0转换doctype。我该怎么办?

3 个答案:

答案 0 :(得分:4)

尝试clientWidth属性,如下所示:

$('body').attr('clientWidth')

来自Mozilla开发人员中心:

  

clientWidth是元素的内部宽度(以像素为单位)。它包括填充但不包括垂直滚动条(如果存在,如果呈现),边框或边距。

来自MSDN:

  

检索对象的宽度,包括填充,但不包括边距,边框或滚动条。

答案 1 :(得分:1)

它不应该计算scollbar。你的元素有边缘或边框吗?这将添加到元素的宽度并影响水平滚动。只需尝试从$(document).width()值中减去。

答案 2 :(得分:0)

您可以使用不包含滚动条的$(window).width()。但是,这是窗口宽度而不是文档宽度。在水平滚动条情况下,文档可能比窗口宽很多。如果您的页面永远不会变得足够宽,不适合水平滚动条,这对您来说可能没问题。

在IE(Quirksmode)中获取无滚动条的文档宽度,无论是否存在水平滚动条,我都知道没有完美的解决方案。这就是我目前使用的:

var maxLikelyScrollbarWidth = 25; // It's 20px on my IE
var hscroll = $(document).width() > $(window).width() + maxLikelyScrollbarWidth;
var widthNoScrollbar = hscroll ? $(document).width() : $(window).width();

这不是完美但是能胜任。但是有边缘情况。