繁体   English   中英

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

[英]How can I get IE's width without scrollbar

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

$(document).width()

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

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

尝试clientWidth属性,如下所示:

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

来自 Mozilla 开发者中心:

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

来自 MSDN:

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

它不应该计算滚动条。 您的元素是否有marginborder 这将被添加到元素的宽度并影响水平滚动。 只需尝试从$(document).width()值中减去$(document).width()

您可以使用$(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();

它并不完美,但可以完成工作。 不过也有边缘情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM