关于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脚本学习 比较实用的基础
Sep 07 Javascript
禁止ajax缓存获取程序最新数据的方法
Nov 19 Javascript
js验证真实姓名与身份证号是否匹配
Oct 13 Javascript
jQuery实现简单的文件上传进度条效果
Mar 26 Javascript
跨域资源共享 CORS 详解
Apr 26 Javascript
jQuery实现拖拽页面元素并将其保存到cookie的方法
Jun 12 Javascript
详解JavaScript中js对象与JSON格式字符串的相互转换
Feb 14 Javascript
利用Jasmine对Angular进行单元测试的方法详解
Jun 12 Javascript
JS中Map和ForEach的区别
Feb 05 Javascript
微信小程序实现页面跳转传递参数(实体,对象)
Aug 12 Javascript
layui对工具条进行选择性的显示方法
Sep 19 Javascript
ant design vue的form表单取值方法
Jun 01 Vue.js
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
基于php伪静态的实现详细介绍
2013/04/28 PHP
基于CakePHP实现的简单博客系统实例
2015/06/28 PHP
php fseek函数读取大文件两种方法
2016/10/12 PHP
iOS自定义提示弹出框实现类似UIAlertView的效果
2016/11/16 PHP
在 IE 中调用 javascript 打开 Excel 表
2006/12/21 Javascript
javascript中最常用的继承模式 组合继承
2010/08/12 Javascript
JS中动态添加事件(绑定事件)的代码
2011/01/09 Javascript
onbeforeunload与onunload事件异同点总结
2013/06/24 Javascript
JS+DIV+CSS实现仿表单下拉列表效果
2015/08/18 Javascript
浅析BootStrap栅格系统
2016/06/07 Javascript
switch语句的妙用(必看篇)
2016/10/03 Javascript
微信小程序 教程之wxapp视图容器 swiper
2016/10/19 Javascript
解决BootStrap Fileinput手机图片上传显示旋转问题
2017/06/01 Javascript
Vue2.0系列之过滤器的使用
2018/03/01 Javascript
vue+elementUi图片上传组件使用详解
2019/08/20 Javascript
[44:26]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第二局
2016/03/03 DOTA
python目录操作之python遍历文件夹后将结果存储为xml
2014/01/27 Python
Python实现一个简单的MySQL类
2015/01/07 Python
Python实现统计文本文件字数的方法
2017/05/05 Python
python3爬取数据至mysql的方法
2018/06/26 Python
Django框架实现的简单分页功能示例
2018/12/04 Python
Python实现银行账户资金交易管理系统
2020/01/03 Python
python 爬取马蜂窝景点翻页文字评论的实现
2020/01/20 Python
利用Tensorboard绘制网络识别准确率和loss曲线实例
2020/02/15 Python
Python使用多进程运行含有任意个参数的函数
2020/05/02 Python
html5 canvas的绘制文本自动换行的示例代码
2018/09/17 HTML / CSS
英国乐购杂货:Tesco Groceries
2018/11/29 全球购物
开会迟到检讨书
2014/01/08 职场文书
《商鞅南门立木》教学反思
2014/02/16 职场文书
煤矿安全协议书
2014/08/20 职场文书
2014年学生会干事工作总结
2014/11/07 职场文书
2014年保育员个人工作总结
2014/12/02 职场文书
领导欢迎词致辞
2015/01/23 职场文书
交通安全温馨提示语
2015/07/14 职场文书
React Hook用法示例详解(6个常见hook)
2021/04/28 Javascript
MySQL 数据恢复的多种方法汇总
2021/06/21 MySQL