【发布时间】:2014-06-17 20:04:20
【问题描述】:
在网页上,我需要测试是否有水平滚动条(以便我以编程方式更改某些其他元素的 css)。有没有办法使用 jquery(或纯 javascript)获取这些信息?
我测试过
function isHorizontalScrollbarEnabled() {
return $(document).width()!=$(window).width();
}
但它似乎不适用于所有浏览器(例如不适用于我测试过的最近的三星手机)。我需要它支持所有浏览器,包括最近的移动设备。
谢谢!
编辑 1
我测试了 plalx 和 laconbass 提供的解决方案,测试了 IE8、Firefox、Chrome 和 iPad。适用于 IE、Firefox 和 Chrome,但在 iPad 上不是我想要的。
问题似乎与移动设备上的缩放功能有关:尽管当我在 iPad 上放大时,会出现一个水平滚动条,document、window 和 document.body 宽度没有改变(也是我今天早些时候测试的三星手机也有同样的问题)。
这是我用来测试的代码:
<!DOCTYPE html>
<html lang="en">
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
<title>test</title>
</head>
<body>
<div style="width: 500px; background: red;" id="test">click here to test</div>
<script type="text/javascript">
var i = 1;
$("#test").click(function(){
$(this).html("Test #" + (i++)
+ "<br>document width=" + $(document).width() + ", windows width=" + $(window).width()
+ "<br>document width=" + $(document).width() + ", body width=" + $(document.body).width()
);
});
</script>
</body>
</html>
知道如何检测在 iPad 等移动设备上放大/缩小后也可以工作的水平滚动条的存在吗?
【问题讨论】:
-
我尝试了该帖子中建议的解决方案,适用于 chrome 但适用于 firefox,即使有水平滚动条,
$("body")[0].scrollWidth和$("body")[0].clientWidth也相同。 -
@plalx 也许问题是一样的,但 IMO 这个问题要清楚得多
-
这个问题你解决了吗?
标签: javascript jquery html cross-browser scrollbar