关于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 相关文章推荐
High Performance JavaScript(高性能JavaScript)读书笔记分析
May 05 Javascript
Dom 学习总结以及实例的使用介绍
Apr 24 Javascript
使用jquery实现IE下按backspace相当于返回操作
Mar 18 Javascript
js实现类似于add(1)(2)(3)调用方式的方法
Mar 04 Javascript
Shell脚本实现Linux系统和进程资源监控
Mar 05 Javascript
拥Bootstrap入怀——导航栏篇
May 30 Javascript
jQuery simpleModal插件的使用介绍
Aug 30 Javascript
详解bootstrap导航栏.nav与.navbar区别
Nov 23 Javascript
Vue实现搜索 和新闻列表功能简单范例
Mar 16 Javascript
javascript、php关键字搜索函数的使用方法
May 29 Javascript
Django模板继承 extend标签实例代码详解
May 16 Javascript
JS实现的检验身份证格式并输出出生日期,年龄,性别,出生地示例
May 17 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
全国FM电台频率大全 - 29 青海省
2020/03/11 无线电
PHP 和 MySQL 基础教程(一)
2006/10/09 PHP
php date与gmdate的获取日期的区别
2010/02/08 PHP
PHP strtok()函数的优点分析
2010/03/02 PHP
php 强制下载文件实现代码
2013/10/28 PHP
PHP利用header跳转失效的解决方法
2014/10/24 PHP
wordpress安装过程中遇到中文乱码的处理方法
2015/04/21 PHP
Laravel框架下的Contracts契约详解
2020/03/17 PHP
javascript window.opener的用法分析
2010/04/07 Javascript
javascript开发技术大全-第3章 js数据类型
2011/07/03 Javascript
JavaScript中最简洁的编码html字符串的方法
2014/10/11 Javascript
教你如何使用node.js制作代理服务器
2014/11/26 Javascript
原生JS实现美图瀑布流布局赏析
2015/09/07 Javascript
js操作数组函数实例小结
2015/12/10 Javascript
jQuery无刷新上传之uploadify3.1简单使用
2016/06/18 Javascript
深入浅析JS是按值传递还是按引用传递(推荐)
2016/09/18 Javascript
JS常用函数和常用技巧小结
2016/10/15 Javascript
浅谈javascript中的数据类型转换
2016/12/27 Javascript
vue2.0父子组件及非父子组件之间的通信方法
2017/01/21 Javascript
JQuery查找子元素find()和遍历集合each的方法总结
2017/03/07 Javascript
JavaScript 巧学巧用
2017/05/23 Javascript
图片懒加载imgLazyLoading.js使用详解
2020/09/15 Javascript
详解vue的diff算法原理
2018/05/20 Javascript
今天,小程序正式支持 SVG
2019/04/20 Javascript
Python使用scrapy采集数据过程中放回下载过大页面的方法
2015/04/08 Python
Python中使用不同编码读写txt文件详解
2015/05/28 Python
python3新特性函数注释Function Annotations用法分析
2016/07/28 Python
Python实现朴素贝叶斯分类器的方法详解
2018/07/04 Python
学习Python爬虫的几点建议
2020/08/05 Python
个人简历自我鉴定
2013/10/11 职场文书
大客户销售经理职责
2013/12/04 职场文书
婚庆答谢词
2015/01/04 职场文书
贷款收入证明格式
2015/06/24 职场文书
Go Gin实现文件上传下载的示例代码
2021/04/02 Golang
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
2022/04/21 Python
vue el-table实现递归嵌套的示例代码
2022/08/14 Vue.js