首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >一种跨浏览器检测浏览器窗口scrollTop的方法

一种跨浏览器检测浏览器窗口scrollTop的方法
EN

Stack Overflow用户
提问于 2009-05-16 01:01:08
回答 10查看 66.7K关注 0票数 63

检测浏览器窗口scrollTop的最佳跨浏览器方法是什么?我不喜欢使用任何预先构建的代码库,因为这是一个非常简单的脚本,并且我不需要所有这些无用的东西。

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2009-05-16 14:32:01

代码语言:javascript
复制
function getScrollTop(){
    if(typeof pageYOffset!= 'undefined'){
        //most browsers except IE before #9
        return pageYOffset;
    }
    else{
        var B= document.body; //IE 'quirks'
        var D= document.documentElement; //IE with doctype
        D= (D.clientHeight)? D: B;
        return D.scrollTop;
    }
}

alert(getScrollTop())
票数 90
EN

Stack Overflow用户

发布于 2013-05-16 15:25:32

或者简单地说:

代码语言:javascript
复制
var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
票数 23
EN

Stack Overflow用户

发布于 2009-05-16 02:16:25

如果您不想包含整个JavaScript库,则通常可以从其中提取所需的部分。

例如,这基本上就是如何jQuery implements跨浏览器滚动(顶部|左侧):

代码语言:javascript
复制
function getScroll(method, element) {
  // The passed in `method` value should be 'Top' or 'Left'
  method = 'scroll' + method;
  return (element == window || element == document) ? (
    self[(method == 'scrollTop') ? 'pageYOffset' : 'pageXOffset'] ||
    (browserSupportsBoxModel && document.documentElement[method]) ||
    document.body[method]
  ) : element[method];
}
getScroll('Top', element);
getScroll('Left', element);

注意:您会注意到上面的代码包含一个未定义的browserSupportsBoxModel变量。jQuery defines this,方法是向页面临时添加div,然后测量一些属性,以确定浏览器是否正确实现了框模型。正如您可以想象的那样,此标志检查IE。具体地说,它检查IE 6 or 7 in quirks mode。由于检测相当复杂,我将它留给您作为练习;-),假设您已经在代码中的其他地方使用了browser feature detection

编辑:如果你还没有猜到,我强烈建议你使用一个库来做这些事情。对于健壮和面向未来的代码来说,开销是一个很小的代价,任何人都可以在跨浏览器框架的基础上更有效率。(而不是花无数个小时用你的头撞IE)。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/871399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档