关于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 相关文章推荐
通过JAVASCRIPT读取ASP设定的COOKIE
Nov 24 Javascript
js中页面的重新加载(当前页面/上级页面)及frame或iframe元素引用介绍
Jan 24 Javascript
JS获取页面input控件中所有text控件并追加样式属性
Feb 25 Javascript
javascript日期验证之输入日期大于等于当前日期
Dec 13 Javascript
理解javascript中try...catch...finally
Dec 25 Javascript
js监听键盘事件的方法_原生和jquery的区别详解
Oct 10 Javascript
jquery UI Datepicker时间控件冲突问题解决
Dec 16 Javascript
jQuery实现的简单悬浮层功能完整实例
Jan 23 Javascript
angular.JS实现网页禁用调试、复制和剪切
Mar 31 Javascript
你有必要知道的10个JavaScript难点
Jul 25 Javascript
详述 Sublime Text 打开 GBK 格式中文乱码的解决方法
Oct 26 Javascript
vue 组件之间事件触发($emit)与event Bus($on)的用法说明
Jul 28 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
星际争霸秘籍
2020/03/04 星际争霸
博士208HAF收音机实习报告
2021/03/02 无线电
PHPExcel实现表格导出功能示例【带有多个工作sheet】
2018/06/13 PHP
PHP连接及操作PostgreSQL数据库的方法详解
2019/01/30 PHP
PHP _construct()函数讲解
2019/02/03 PHP
JavaScript与C# Windows应用程序交互方法
2007/06/29 Javascript
jQuery判断元素是否存在的可靠方法
2014/05/06 Javascript
javascript浏览器窗口之间传递数据的方法
2015/01/20 Javascript
jQuery中大家不太了解的几个方法
2015/03/04 Javascript
JavaScript中Number对象的toFixed() 方法详解
2016/09/02 Javascript
javascript中mouseenter与mouseover的异同
2017/06/06 Javascript
vue轮播图插件vue-awesome-swiper的使用代码实例
2017/07/10 Javascript
bing Map 在vue项目中的使用详解
2018/04/09 Javascript
vue-cli3脚手架的配置及使用教程
2018/08/28 Javascript
Vue项目pdf(base64)转图片遇到的问题及解决方法
2018/10/19 Javascript
layui type2 通过url给iframe子页面传值的例子
2019/09/06 Javascript
jquery实现点击弹出对话框
2020/02/08 jQuery
JS实现前端动态分页码代码实例
2020/06/02 Javascript
python 七种邮件内容发送方法实例
2014/04/22 Python
Python多线程编程简单介绍
2015/04/13 Python
python获取当前时间对应unix时间戳的方法
2015/05/15 Python
python使用Matplotlib画条形图
2020/03/25 Python
在python中bool函数的取值方法
2018/11/01 Python
更新修改后的Python模块方法
2019/03/03 Python
在win10和linux上分别安装Python虚拟环境的方法步骤
2019/05/09 Python
pip install 使用国内镜像的方法示例
2020/04/03 Python
玩具反斗城葡萄牙官方商城:Toys"R"Us葡萄牙
2016/10/21 全球购物
全世界最美丽的四星和五星级酒店预订:Prestigia.com
2017/11/15 全球购物
英国的领先快速时尚零售商:In The Style
2019/03/25 全球购物
临床医学专业学生的自我评价分享
2013/11/21 职场文书
公司财务自我评价分享
2013/12/17 职场文书
捐书活动总结
2014/05/04 职场文书
铣床操作工岗位职责
2014/06/13 职场文书
2015年七年级班主任工作总结
2015/05/21 职场文书
python神经网络ResNet50模型
2022/05/06 Python
Python使用openpyxl模块处理Excel文件
2022/06/05 Python