关于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表格内容过滤的实现方法
Jul 05 Javascript
浅析JavaScript中的delete运算符
Nov 30 Javascript
javascript如何使用bind指定接收者
May 04 Javascript
javascript批量修改文件编码格式的方法
Jan 27 Javascript
jQuery实现仿腾讯微博滑出效果报告每日天气的方法
May 11 Javascript
利用jQuery及AJAX技术定时更新GridView的某一列数据
Dec 04 Javascript
Jquery使用小技巧汇总
Dec 29 Javascript
mvvm双向绑定机制的原理和实现代码(推荐)
Jun 07 Javascript
JavaScript基于replace+正则实现ES6的字符串模版功能
Apr 25 Javascript
Redux实现组合计数器的示例代码
Jul 04 Javascript
解决vue-cli项目开发运行时内存暴涨卡死电脑问题
Oct 29 Javascript
Vuex,iView UI面包屑导航使用扩展详解
Nov 04 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
非洲第一个咖啡超凡杯大赛承办国—卢旺达的咖啡怎么样
2021/03/03 咖啡文化
php循环语句 for()与foreach()用法区别介绍
2012/09/05 PHP
Jquery 学习笔记(一)
2009/10/13 Javascript
JQuery 写的个性导航菜单
2009/12/24 Javascript
基于jQuery实现的文字按钮表单特效整理
2014/12/07 Javascript
教你如何使用firebug调试功能了解javascript闭包和this
2015/03/04 Javascript
js实现瀑布流的三种方式比较
2020/06/28 Javascript
详解使用vue-router进行页面切换时滚动条位置与滚动监听事件
2017/03/08 Javascript
利用canvas实现的加载动画效果实例代码
2017/07/05 Javascript
jQuery ajax读取本地json文件的实例
2017/10/31 jQuery
详解在vue-test-utils中mock全局对象
2018/11/07 Javascript
微信小程序非swiper组件实现的自定义伪3D轮播图效果示例
2018/12/11 Javascript
python实现迭代法求方程组的根过程解析
2019/11/25 Javascript
vue 实现websocket发送消息并实时接收消息
2019/12/09 Javascript
Vue中的nextTick作用和几个简单的使用场景
2021/01/25 Vue.js
Vite和Vue CLI的优劣
2021/01/30 Vue.js
[39:21]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.24
2019/09/10 DOTA
python中函数传参详解
2016/07/03 Python
Python使用matplotlib 画矩形的三种方式分析
2019/10/31 Python
python实现word文档批量转成自定义格式的excel文档的思路及实例代码
2020/02/21 Python
python3中calendar返回某一时间点实例讲解
2020/11/18 Python
让IE可以变相支持CSS3选择器
2010/01/21 HTML / CSS
美国轻奢时尚购物网站:REVOLVE(支持中文)
2020/07/18 全球购物
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?用contains来区分是否有重复的对象。还是都不用
2013/07/30 面试题
六查六看自查材料
2014/02/17 职场文书
学校三八妇女节活动情况总结
2014/03/09 职场文书
社区爱国卫生月活动总结
2014/06/30 职场文书
体育专业求职信
2014/07/16 职场文书
我的梦想演讲稿500字
2014/08/21 职场文书
锅炉工岗位职责
2015/02/13 职场文书
2015最新学生自我评价范文
2015/03/03 职场文书
舌尖上的中国观后感
2015/06/02 职场文书
2015年汽车销售员工作总结
2015/07/24 职场文书
关于python中模块和重载的问题
2021/11/02 Python
SQL Server 中的事务介绍
2022/05/20 SQL Server
Redis特殊数据类型Geospatial地理空间
2022/06/01 Redis