关于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插件开发方法(附完整实例及下载)
Apr 01 Javascript
js 实现css风格选择器(压缩后2KB)
Jan 12 Javascript
Javascript绝句欣赏 一些经典的js代码
Feb 22 Javascript
js保留小数点后几位的写法
Jan 03 Javascript
js图片处理示例代码
May 12 Javascript
jQuery基于BootStrap样式实现无限极地区联动
Aug 26 Javascript
JS实现的幻灯片切换显示效果
Sep 07 Javascript
微信小程序 五星评分的实现实例
Aug 04 Javascript
mpvue中配置vuex并持久化到本地Storage图文教程解析
Mar 15 Javascript
webpack4.0打包优化策略整理小结
Mar 30 Javascript
AngularJS 多指令Scope问题的解决
Oct 25 Javascript
微信小程序wxs实现吸顶效果
Jan 08 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
一个用于网络的工具函数库
2006/10/09 PHP
php中mysql模块部分功能的简单封装
2011/09/30 PHP
深入php 正则表达式的学习探讨
2013/06/06 PHP
php的$_FILES的临时储存文件与回收机制实测过程
2013/07/12 PHP
php实现window平台的checkdnsrr函数
2015/05/27 PHP
php从数据库中读取特定的行(实例)
2017/06/02 PHP
js 内存释放问题
2010/04/25 Javascript
JS+CSS实现的蓝色table选项卡效果
2015/10/08 Javascript
jQuery获取浏览器类型和版本号的方法
2016/07/05 Javascript
微信小程序 加载 app-service.js 错误解决方法
2016/10/12 Javascript
vue.js事件处理器是什么
2017/03/20 Javascript
js实现随机数字字母验证码
2017/06/19 Javascript
微信小程序实现天气预报功能
2018/07/18 Javascript
微信小程序ibeacon三点定位详解
2018/10/31 Javascript
详解jQuery获取特殊属性的值以及设置内容
2018/11/14 jQuery
d3绘制基本的柱形图的实现代码
2018/12/12 Javascript
使用Vue.set()方法实现响应式修改数组数据步骤
2019/11/09 Javascript
js 解析 JSON 数据简单示例
2020/04/21 Javascript
python中的文件打开与关闭操作命令介绍
2018/04/26 Python
python中map的基本用法示例
2018/09/10 Python
Python基本类型的连接组合和互相转换方式(13种)
2019/12/16 Python
PyCharm汉化安装及永久激活详细教程(靠谱)
2020/01/16 Python
python实现word文档批量转成自定义格式的excel文档的思路及实例代码
2020/02/21 Python
html5中地理位置定位api接口开发应用小结
2013/01/04 HTML / CSS
BISSELL官网:北美吸尘器第一品牌
2019/03/14 全球购物
企业道德讲堂实施方案
2014/03/19 职场文书
企业新年寄语
2014/04/04 职场文书
销售顾问工作计划书
2014/08/15 职场文书
小学生美德少年事迹材料
2014/08/24 职场文书
厨师长岗位职责范本
2014/08/25 职场文书
2014年车间主任工作总结
2014/12/10 职场文书
如何写观后感
2015/06/19 职场文书
24句精辟的现实社会语录,句句扎心,道尽人性
2019/08/29 职场文书
详解Spring事件发布与监听机制
2021/06/30 Java/Android
html+css实现滚动到元素位置显示加载动画效果
2021/08/02 HTML / CSS
Redis命令处理过程源码解析
2022/02/12 Redis