0

我正在尝试获取浏览器视口大小。

当页面最初加载时(在 中jQuery(function() { .. });),这两个都显示正确的值(例如:560):

console.log($(window).height());
console.log(document.documentElement.clientHeight);

但是后来当我做同样的事情时,它会显示整个文档的高度(例如:11675)。

有很多 HTML 和 JS,需要一段时间才能弄清楚发生了什么,我只是想知道,有没有人看到这样的东西,如果是这样,是什么原因造成的,我怎样才能获得正确的视口大小? 所有谷歌点击都表明这是检索价值的正确方法。

注意:我使用的是铬。

4

1 回答 1

1

我最近在我的一个项目中遇到了同样的问题。我没有时间挖掘和隔离这个奇怪的错误,我最终使用这个函数(改编自这个答案)来正确获取视口尺寸:

var getViewportSize = (function(){
        var w = window,
            d = document,
            e = d.documentElement,
            g = d.getElementsByTagName('body')[0];

        return function(){
            return {
                w : Math.max(w.innerWidth || e.clientWidth || g.clientWidth, app.config.minWidth),
                h : Math.max(w.innerHeight|| e.clientHeight|| g.clientHeight, app.config.minHeight)
            };
        }
    })();

根据我的测试,当控制台或其他浏览器扩展/工具栏占用一些视口空间时,jQuery 返回了不正确的大小。
希望这会有所帮助,但我也很好奇并试图解决这个问题,因为很难认为像 jQuery 2.0 这样的成熟库有这些错误。

于 2013-06-03T10:48:20.367 回答