关于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实现选中弹出窗口选择框内容后赋值给文本框的方法
Nov 23 Javascript
jQuery使用正则表达式限制文本框只能输入数字
Jun 18 Javascript
JavaScript学习小结之使用canvas画“哆啦A梦”时钟
Jul 24 Javascript
使用ionic切换页面卡顿的解决方法
Dec 16 Javascript
js中DOM三级列表(代码分享)
Mar 20 Javascript
JS中将多个逗号替换为一个逗号的实现代码
Jun 23 Javascript
JavaScrip关于创建常量的知识点
Dec 07 Javascript
Angular实现的table表格排序功能完整示例
Dec 22 Javascript
js使用ajax传值给后台,后台返回字符串处理方法
Aug 08 Javascript
vue服务端渲染页面缓存和组件缓存的实例详解
Sep 18 Javascript
vue车牌号校验和银行校验实战
Jan 23 Javascript
使用vue-cli3新建一个项目并写好基本配置(推荐)
Apr 24 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
symfony2.4的twig中date用法分析
2016/03/18 PHP
在PHP语言中使用JSON和将json还原成数组的方法
2016/07/19 PHP
PHP中new static()与new self()的比较
2016/08/19 PHP
PHPCMS V9 添加二级导航的思路详解
2016/10/20 PHP
PHP封装的XML简单操作类完整实例
2017/11/13 PHP
jquery imgareaselect 使用利用js与程序结合实现图片剪切
2009/07/30 Javascript
jquery如何获取元素的滚动条高度等实现代码
2015/10/19 Javascript
javascript特殊日历控件分享
2016/03/07 Javascript
基于JavaScript实现单选框下拉菜单添加文件效果
2016/06/26 Javascript
全面了解addEventListener和on的区别
2016/07/14 Javascript
JS实现静态页面搜索并高亮显示功能完整示例
2017/09/19 Javascript
浅谈vue中慎用style的scoped属性
2017/11/28 Javascript
使用JavaScript和MQTT开发物联网应用示例解析
2020/08/07 Javascript
Vue实现随机验证码功能
2020/12/29 Vue.js
python发送伪造的arp请求
2014/01/09 Python
Python队列的定义与使用方法示例
2017/06/24 Python
详解Python实现多进程异步事件驱动引擎
2017/08/25 Python
python3+PyQt5泛型委托详解
2018/04/24 Python
python脚本监控Tomcat服务器的方法
2018/07/06 Python
Python中面向对象你应该知道的一下知识
2019/07/10 Python
使用turtle绘制五角星、分形树
2019/10/06 Python
tensorflow保持每次训练结果一致的简单实现
2020/02/17 Python
三步解决python PermissionError: [WinError 5]拒绝访问的情况
2020/04/22 Python
解决django框架model中外键不落实到数据库问题
2020/05/20 Python
matplotlib 多个图像共用一个colorbar的实现示例
2020/09/10 Python
Pycharm添加虚拟解释器报错问题解决方案
2020/10/13 Python
Pycharm 设置默认解释器路径和编码格式的操作
2021/02/05 Python
CSS3中HSL和HSLA的简单使用示例
2015/07/14 HTML / CSS
面向中国市场的在线海淘美妆零售网站:Beauty House美丽屋
2021/03/02 全球购物
英语专业毕业生求职简历的自我评价
2013/10/24 职场文书
社会学专业求职信
2014/02/24 职场文书
班风口号
2014/06/18 职场文书
论群众路线学习笔记
2014/11/06 职场文书
简短的36句中秋节祝福信息语句
2019/09/09 职场文书
有关信念的名言语录集锦
2019/12/06 职场文书
nginx容器方式反向代理实战
2022/04/18 Servers