关于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 相关文章推荐
JS 建立对象的方法
Apr 21 Javascript
JavaScript prototype属性使用说明
May 13 Javascript
javascript 闭包详解
Feb 15 Javascript
通过伪协议解决父页面与iframe页面通信的问题
Apr 05 Javascript
JavaScript中调用函数的4种方式代码实例
Jul 08 Javascript
详解用原生JavaScript实现jQuery的某些简单功能
Dec 19 Javascript
学习使用jQuery表单验证插件和日历插件
Feb 13 Javascript
JS中关于正则的巧妙操作
Aug 31 Javascript
vue项目中的webpack-dev-sever配置方法
Dec 14 Javascript
微信小程序之事件交互操作实例分析
Dec 03 Javascript
前端js中的事件循环eventloop机制详解
May 15 Javascript
js瀑布流布局的实现
Jun 28 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
PHP连接局域网MYSQL数据库的简单实例
2013/08/26 PHP
php自动加载autoload机制示例分享
2014/02/20 PHP
php封装好的人民币数值转中文大写类
2015/12/20 PHP
php curl获取到json对象并转成数组array的方法
2018/05/31 PHP
PHP的简单跳转提示的实现详解
2019/03/14 PHP
ext form 表单提交数据的方法小结
2008/08/08 Javascript
jQuery学习笔记 获取jQuery对象
2012/09/19 Javascript
jQuery插件分享之分页插件jqPagination
2014/06/06 Javascript
jQuery EasyUI之DataGrid使用实例详解
2016/01/04 Javascript
所见即所得的富文本编辑器bootstrap-wysiwyg使用方法详解
2016/05/27 Javascript
webpack常用配置项配置文件介绍
2016/11/07 Javascript
Vue 2.x教程之基础API
2017/03/06 Javascript
微信小程序顶部可滚动导航效果
2017/10/31 Javascript
vue项目中的webpack-dev-sever配置方法
2017/12/14 Javascript
vue.js 实现点击按钮动态添加li的方法
2018/09/07 Javascript
详解vue如何使用rules对表单字段进行校验
2018/10/17 Javascript
使用gulp构建前端自动化的方法示例
2018/12/25 Javascript
小程序scroll-view安卓机隐藏横向滚动条的实现详解
2019/05/16 Javascript
javascript设计模式 ? 抽象工厂模式原理与应用实例分析
2020/04/09 Javascript
vue项目中播放rtmp视频文件流的方法
2020/09/17 Javascript
python编写的最短路径算法
2015/03/25 Python
使用Python中的cookielib模拟登录网站
2015/04/09 Python
python中is与双等于号“==”的区别示例详解
2017/11/21 Python
python 判断字符串中是否含有汉字或非汉字的实例
2019/07/15 Python
对Matlab中共轭、转置和共轭装置的区别说明
2020/05/11 Python
3分钟看懂Python后端必须知道的Django的信号机制
2020/07/26 Python
使用jupyter notebook运行python和R的步骤
2020/08/13 Python
python+opencv实现车道线检测
2021/02/19 Python
荷兰皇家航空公司官方网站:KLM Royal Dutch Airlines
2017/12/07 全球购物
CHARLES & KEITH加拿大官网:新加坡时尚品牌
2020/03/26 全球购物
毕业生机械建模求职信
2013/10/14 职场文书
四年大学生活的个人自我评价
2013/12/11 职场文书
《猴子种树》教学反思
2014/02/14 职场文书
保送生自荐信
2015/03/06 职场文书
员工规章制度范本
2015/08/07 职场文书
基于Redis结合SpringBoot的秒杀案例详解
2021/10/05 Redis