关于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的防止大图片撑破页面的实现代码(立即缩放)
Oct 24 Javascript
jquery+html5制作超酷的圆盘时钟表
Apr 14 Javascript
情人节单身的我是如何在敲完代码之后收到12束玫瑰的(javascript)
Aug 21 Javascript
JS基于Ajax实现的网页Loading效果代码
Oct 27 Javascript
JavaScript遍历求解数独问题的主要思路小结
Jun 12 Javascript
jQuery简单实现中间浮窗效果
Sep 04 Javascript
vue2.0学习之axios的封装与vuex介绍
May 28 Javascript
Vue 实现拖动滑块验证功能(只有css+js没有后台验证步骤)
Aug 24 Javascript
JSON生成Form表单的方法示例
Nov 21 Javascript
JS栈stack类的实现与使用方法示例
Jan 31 Javascript
vue路由 遍历生成复数router-link的例子
Oct 30 Javascript
详解 TypeScript 枚举类型
Nov 02 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 接入微信扫码支付总结(总结篇)
2016/11/03 PHP
php实现的pdo公共类定义与用法示例
2017/07/19 PHP
ThinkPHP框架实现的微信支付接口开发完整示例
2019/04/10 PHP
两个select之间option的互相添加操作(jquery实现)
2009/11/12 Javascript
IE8的JavaScript点击事件(onclick)不兼容的解决方法
2013/11/22 Javascript
NodeJS学习笔记之FS文件模块
2015/01/13 NodeJs
Node.js重新刷新session过期时间的方法
2016/02/04 Javascript
正则表达式(语法篇推荐)
2016/06/24 Javascript
Angularjs 自定义服务的三种方式(推荐)
2016/08/02 Javascript
Angularjs结合Bootstrap制作的一个TODO List
2016/08/18 Javascript
使用jquery判断一个元素是否含有一个指定的类(class)实例
2017/02/12 Javascript
AngularJS日程表案例详解
2017/08/15 Javascript
解决vue.js 数据渲染成功仍报错的问题
2018/08/25 Javascript
ng-events类似ionic中Events的angular全局事件
2018/09/05 Javascript
Smartour 让网页导览变得更简单(推荐)
2019/07/19 Javascript
layui在form表单页面通过Validform加入简单验证的方法
2019/09/06 Javascript
layui点击数据表格添加或删除一行的例子
2019/09/12 Javascript
Python实现两个list对应元素相减操作示例
2017/06/09 Python
python读取几个G的csv文件方法
2019/01/07 Python
python内置函数sorted()用法深入分析
2019/10/08 Python
EGO Shoes美国/加拿大:英国时髦鞋类品牌
2018/08/04 全球购物
澳大利亚足球鞋和服装购物网站:Ultra Football
2018/10/11 全球购物
Foot Locker澳洲官网:美国运动服和鞋类零售商
2019/10/11 全球购物
Cocopanda波兰:购买化妆品、护肤品、护发和香水
2020/05/25 全球购物
跟单文员岗位职责
2014/01/03 职场文书
外贸员简历中的自我评价
2014/03/04 职场文书
婚前保证书
2014/04/29 职场文书
资助贫困学生倡议书
2014/05/16 职场文书
物流管理专业自荐信
2014/06/23 职场文书
合伙开公司协议书范本
2014/10/28 职场文书
2014年宣传思想工作总结
2014/12/10 职场文书
2015年见习期个人工作总结
2015/05/28 职场文书
体育部部长竞选稿
2015/11/21 职场文书
《你在为谁工作》心得体会(共8篇)
2016/01/20 职场文书
七年级生物教学反思
2016/02/20 职场文书
《悬崖边的树》读后感2篇
2019/12/02 职场文书