关于scrollLeft,scrollTop的浏览器兼容性测试


Posted in Javascript onMarch 19, 2013

今天在修改原群组弹窗的时候,发现弹窗在谷歌浏览器chrome下的位置跟在别的浏览器下不一样.逐一排查,肯定是在计算窗口位置的时候,少加了scrollTop这个值.在查看源代码的时候发现直接采用

document.documentElement.scrollTop这个,但在chrome下这个值为0.

在有文档声明的情况下,也就是第一行有个dtd声明,标准浏览器认识document.documentElement.scrollTop,可chrome竟然不认识这斯.在没有文档声明的情况下,chrome,safari还是可以读取到scrollTop值.因为chrome是通过document.body.scrollTop获取值的.

解决这个问题:不用去那么麻烦去判断浏览器类别,因为在不同情况下,document.body、document.documentElement都有可能获取到不同的值的特点.问题就很好解决.
在获取浏览器或某div的scrollTop或scrollLeft时,我封装了一个方法:

var ueScroll=(function(){ 
//获取scrollX 
function scrollX(ele){ 
var element=ele || document.body; 
return element.scrollLeft || (document.documentElement && document.documentElement.scrollLeft); 
} 
//获取scrollY 
function scrollY(ele){ 
var element=ele || document.body; 
return element.scrollTop || (document.documentElement && document.documentElement.scrollTop); 
} 
return { 
left:scrollX, 
top:scrollY 
} 
})()

在DEMO中各浏览器获取scrollTop,scrollLeft值差异性调用的方式也很方便简单的,只要跟普通的对象调用方式一样.

这个也可以直接用在textarea或div获取scrollTop,scrollLeft上的,只要后面传进一个dom对象即可.

Javascript 相关文章推荐
jQuery中.live()方法的用法深入解析
Dec 30 Javascript
验证码在IE中不刷新而谷歌等浏览器正常的解决方案
Mar 18 Javascript
JS根据年月获得当月天数的实现代码
Jul 03 Javascript
Javascript学习笔记之函数篇(四):arguments 对象
Nov 23 Javascript
javascript实现checkbox复选框实例代码
Jan 10 Javascript
jQuery版本升级踩坑大全
Jan 12 Javascript
jQuery实现查找最近父节点的方法
Jun 23 Javascript
如何解决IONIC页面底部被遮住无法向上滚动问题
Sep 06 Javascript
老生常谈JavaScript获取CSS样式的方法(兼容各浏览器)
Sep 19 Javascript
webpack4实现不同的导出类型
Apr 09 Javascript
详解vue组件之间的通信
Aug 30 Javascript
微信小程序将页面按钮悬浮固定在底部的实现代码
Oct 29 Javascript
input输入框的自动匹配(原生代码)
Mar 19 #Javascript
javascript实现tabs选项卡切换效果(扩展版)
Mar 19 #Javascript
javascript实现tabs选项卡切换效果(自写原生js)
Mar 19 #Javascript
jquery写个checkbox——类似邮箱全选功能
Mar 19 #Javascript
借助script进行Http跨域请求:JSONP实现原理及代码
Mar 19 #Javascript
DIV+CSS+JS不间断横向滚动实现代码
Mar 19 #Javascript
下载文件个别浏览器文件名乱码解决办法
Mar 19 #Javascript
You might like
解决cPanel无法安装php5.2.17
2014/06/22 PHP
php文件缓存类用法实例分析
2015/04/22 PHP
php获取指定范围内最接近数的方法
2015/06/02 PHP
php+ajax无刷新上传图片实例代码
2015/11/17 PHP
PHP使用 Pear 进行安装和卸载包的方法详解
2019/07/08 PHP
JS中简单的实现像C#中using功能(有源码下载)
2007/01/09 Javascript
jquery 设置元素相对于另一个元素的top值(实例代码)
2013/11/06 Javascript
JavaScript中对循环语句的优化技巧深入探讨
2014/06/06 Javascript
JavaScript中的Math.SQRT1_2属性使用简介
2015/06/14 Javascript
测试IE浏览器对JavaScript的AngularJS的兼容性
2015/06/19 Javascript
js中最容易被忽视的事件问题大总结
2016/05/15 Javascript
微信小程序 form组件详解
2016/10/25 Javascript
JS实现css hover操作的方法示例
2017/04/07 Javascript
微信小程序中的swiper组件详解
2017/04/14 Javascript
基于node.js express mvc轻量级框架实践
2017/09/14 Javascript
微信小程序实现可长按移动控件
2020/11/01 Javascript
vue项目打包后请求地址错误/打包后跨域操作
2020/11/04 Javascript
python生成指定长度的随机数密码
2014/01/23 Python
python中使用xlrd、xlwt操作excel表格详解
2015/01/29 Python
Python多线程下载文件的方法
2015/07/10 Python
python数据结构链表之单向链表(实例讲解)
2017/07/25 Python
用不到50行的Python代码构建最小的区块链
2017/11/16 Python
利用Python如何生成便签图片详解
2018/07/09 Python
Django项目创建到启动详解(最全最详细)
2019/09/07 Python
python hash每次调用结果不同的原因
2019/11/21 Python
Python 读取有公式cell的结果内容实例方法
2020/02/17 Python
python实现银行实战系统
2020/02/26 Python
使用Keras实现Tensor的相乘和相加代码
2020/06/18 Python
css3实现多个元素依次显示效果
2017/12/12 HTML / CSS
德国隐形眼镜店:LuckyLens
2018/07/29 全球购物
2014年英语教师工作总结
2014/12/03 职场文书
廉洁自律个人总结
2015/02/14 职场文书
教师求职自荐信
2015/03/26 职场文书
聘用合同范本
2015/09/21 职场文书
Java基于字符界面的简易收银台
2021/06/26 Java/Android
SQL SERVER实现连接与合并查询
2022/02/24 SQL Server