关于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可访问其它域名的cookie的方法
Sep 18 Javascript
js文字横向滚动特效
Nov 11 Javascript
JavaScript仿淘宝页面图片滚动加载及刷新回顶部的方法解析
May 24 Javascript
JS实现鼠标滑过显示边框的菜单效果
Sep 21 Javascript
angular-ngSanitize模块-$sanitize服务详解
Jun 13 Javascript
详解vue父子组件间传值(props)
Jun 29 Javascript
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
Oct 13 jQuery
浅析JS抽象工厂模式
Dec 14 Javascript
JavaScript碎片—函数闭包(模拟面向对象)
Mar 13 Javascript
小程序封装路由文件和路由方法(5种全解析)
May 26 Javascript
vue-devtools的安装和使用步骤详解
Oct 17 Javascript
js实现磁性吸附的示例
Oct 26 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
Protoss兵种介绍
2020/03/14 星际争霸
一个可以找出源代码中所有中文的工具
2006/10/25 PHP
PHP一些常用的正则表达式字符的一些转换
2008/07/29 PHP
php防注入,表单提交值转义的实现详解
2013/06/10 PHP
PHP 解决session死锁的方法
2013/06/20 PHP
PHP实现的统计数据功能详解
2016/12/06 PHP
thinkPHP5.0框架URL访问方法详解
2017/03/18 PHP
PHP5.0~5.6 各版本兼容性cURL文件上传功能实例分析
2018/05/11 PHP
修复IE9&safari 的sort方法
2011/10/21 Javascript
Extjs单独定义各组件的实例代码
2013/06/25 Javascript
Javascript页面添加到收藏夹的简单方法
2013/08/07 Javascript
jquery ready(fn)事件使用介绍
2013/08/21 Javascript
js阻止默认事件与js阻止事件冒泡示例分享 js阻止冒泡事件
2014/01/27 Javascript
jQuery实现级联菜单效果(仿淘宝首页菜单动画)
2014/04/10 Javascript
node.js中的fs.fchown方法使用说明
2014/12/16 Javascript
Vue.js实现拖放效果的实例
2016/09/30 Javascript
获取IE浏览器Cookie信息的方法
2017/01/23 Javascript
详谈js中window.location.search的用法和作用
2017/02/13 Javascript
基于webpack.config.js 参数详解
2018/03/20 Javascript
如何通过setTimeout理解JS运行机制详解
2019/03/23 Javascript
了解JavaScript中let语句
2019/05/30 Javascript
深入了解JavaScript代码覆盖
2019/06/13 Javascript
vue学习笔记之slot插槽用法实例分析
2020/02/29 Javascript
JavaScript数组类型Array相关的属性与方法详解
2020/09/08 Javascript
Python实现获取网站PR及百度权重
2015/01/21 Python
python实现m3u8格式转换为mp4视频格式
2018/02/28 Python
Python爬虫框架Scrapy实例代码
2018/03/04 Python
PyQt QListWidget修改列表项item的行高方法
2019/06/20 Python
关于ZeroMQ 三种模式python3实现方式
2019/12/23 Python
python_mask_array的用法
2020/02/18 Python
HTML5和CSS3实例教程总结(推荐)
2016/07/18 HTML / CSS
Banana Republic英国官网:香蕉共和国,GAP集团旗下偏贵族风
2018/04/24 全球购物
拉丁舞学习者的自我评价
2013/10/27 职场文书
大学毕业后的十年规划
2014/01/07 职场文书
运动会宣传稿100字
2015/07/23 职场文书
高二英语教学反思
2016/03/03 职场文书