获得浏览器窗口滚动条位置
2015-10-22 22:25
211 查看
获得窗口滚动条位置与设置滚动位置
在现代浏览器中均可以从window对象的
pageXOffset和
pageYOffset属性中得到窗口滚动条的位置。
而对于旧版本的 IE (IE8 以及以前) 可以通过
document上的
documentElement或者
body中的
scrollLeft和
scrollTop来获得。
而究竟是在
documentElement上面还是
body上面,者取决与文档的渲染模式,这可以从
document.compatMode上获得。如果是在标准模式下则在
documentElement上获得,否则在
body上。
所以可以通过下面的函数获得滚动条位置。
function getScrollOffsets(){ if(window.pageXOffset!=null){ return { x:window.pageXOffset, y:window.pageYOffset }; } if(document.compatMode === 'CSS1Compat'){ return { x:document.documentElement.scrollLeft, y:document.documentElement.scrollTop }; }else{ return { x:document.body.scrollLeft, y:document.body.scrollTop }; } }
注意: 在 webkit 内核的浏览器中,目前存在一个 bug 那就是无论在什么渲染模式下,
document.documentElement.scrollLeft与
document.documentElement.scrollTop都为 0 ,而
document.body.scrollLeft与
document.body.scrollTop是正确的值。对于上面的函数,我们先从
window.page[X|Y]Offset中获得了值,所以最终的结果依然是正确的。另外,这个 bug 在以后可能会被修复。
如何让页面上下左右滚动呢?
这个时候,可以通过设置
scrollTop和
scrollLeft来让滚动条滚动到指定位置。至于是
documentElement还是
body上面的
scrollTop和
scrollLeft这个就要取决于从那个上面可以正确取得滚动位置了。所以不妨像下面这样:
function setScrollOffsets(x,y){ document.documentElement.scro 4000 llLeft = document.body.scrollLeft = x; document.documentElement.scrollTop = document.body.scrollTop = y; }
相关文章推荐
- ScrollView滚动到底部使用的scrollTo和fullScroll方法的异同
- Android 中 Activity 启动模式
- JPA关联关系
- 软工二
- WMvare workstation创建共享磁盘
- java高并发,如何解决,什么方式解决
- HDOJ 题目2151 Worm(DP水)
- PullToRefreshListView调用onRefreshComplete方法 无法取消刷新的bug
- Hashtable 和 HashMap的区别
- 基于Lucene的全文搜索——Solr
- C语言存储模型小议
- HDU 5462 Manors (2015年沈阳赛区网络赛M题)
- Android软件开发之获取通讯录联系人信息
- hibernate原理解析
- WebService客户端设置缓冲大小问题
- 2015年10月22日总结
- eclipse调用两个控制台进行调试
- TestLink知识点和Mantis知识点
- ios设置app初始化的背景图片Launch Images
- Spark——并行计算框架