关于scrollLeft,scrollTop的浏览器兼容性测试_javascript技巧

今天在修改原群组弹窗的时候,发现弹窗在谷歌浏览器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对象即可.

时间: 2024-09-19 09:40:37

关于scrollLeft,scrollTop的浏览器兼容性测试_javascript技巧的相关文章

JavaScript 浏览器兼容性总结及常用浏览器兼容性分析_javascript技巧

1. children与childNodes IE提供的children.childNodes和firefox下的childNodes的行为是有区别的,firefox下childNodes会把换行和空白字符都算作父节点的子节点,而IE的childNodes和children不会.比如: <div id="dd"> <div>yizhu2000</div> </div> d为dd的div在IE下用childNodes查看,其子节点数为1,而

css与javascript跨浏览器兼容性总结_javascript技巧

本文以大量实例形式总结了css与javascript跨浏览器的兼容性问题.分享给大家供大家参考.具体总结如下: 一.CSS样式兼容性 1. FLOAT闭合(clearing float) 网页在某些浏览器上显示错位很多时候都是因为使用了float浮动而没有真正闭合,这也是div无法自适应高度的一个原因.如果父div没有设float而其子div却设了float的话,父div无法包住整个子DIV,这种情况一般出现在一个父DIV下包含多个子DIV.解决办法: 1) 给父DIV也设上float 2) 在

javascript中日期函数new Date()的浏览器兼容性问题_javascript技巧

同一种语言javascript,在不同的浏览器中,存在语言兼容性问题,本质上是由于不同的浏览器是支持的语言标准和实现上各有差异.本文将基于new Date来创建Date对象来分析这个问题. 1.  问题的提出, 开始时间和结束时间空间无法正确的传递值     在页面中,我们使用了一个时间上的组件来开发时间选择框,但是发现在Firefox下是无法正常工作的,在Chrome下是可以正常运行的. 问题出在哪里呢? 2.  问题分析     结果分析发现是由于如下代码产生的问题:   var times

event对象获取方法总结在google浏览器下测试_javascript技巧

简介: Event 对象代表事件的状态,比如事件在其中发生的元素.键盘按键的状态.鼠标的位置.鼠标按钮的状态. 事件通常与函数结合使用,函数不会在事件发生前被执行! Event对象的获取方法: 方法一: 例如: 复制代码 代码如下: function demo1(e){ var e = e || window.event; //此种方法在ie中和google中可以不传参数e也可以获取到event,但是在火狐中必须在事件方法中传递event参数 //才可以获取到event对象. } <input

IETester中文免费版 – 最佳网页IE浏览器兼容性测试工具

IETester中文免费版 – 最佳网页IE浏览器兼容性测试工具(IE6 IE7 IE8共存) 对于很多拥有自己博客或者接触网页制作的朋友,肯定会遇到自己辛苦写好的页面在不同的浏览器下显示出来的效果截然不同吧,喜欢追求完美的朋友就肯定希望能尽量在不同浏览器下对页面进行测试并保证其正常显示了.当然,像FireFox.Safari.Opera等浏览器还可以随意地安装卸载,然而,最麻烦的莫过于微软的"IE"系列了. 基本上你不能用常规的方法同时在一个系统中安装IE5.IE6.IE7甚至IE8

13个不同浏览器兼容性测试的免费软件工具

前端开发人员最头疼的,莫过于形形色色的浏览器间的兼容性问题.每天绞尽脑汁地为这些本不应该存在的东西费尽心思.由于各个浏览器内核及解析方式的不同,使得相同的前端代码不能实现相同的效果.所以,培养良好标准的代码编写习惯的同时,熟练掌握浏览器兼容性测试的常用工具也是必需的了.这里是网络上传播较多的13个不同操作系统中各色浏览器兼容性测试的软件工具. HTML和CSS验证 首先让我们先看一看检查验证HTML与CSS的方法.我应该说到的是由于我在MAC上工作,会略微偏向于MAC.不要担心,仍然有许多平台独

10款很棒的浏览器兼容性测试工具

  对于前端开发工程师来说,确保代码在各种主流浏览器的各个版本中都能正常工作是件很费时的事情,幸运的是,有很多优秀的工具可以帮助测试浏览器的兼容性,让我们一起看看这些很棒的工具. Spoon Browser Sandbox 点击你需要测试的浏览器环境,安装插件就可以进行测试了.帮助你测试网页在Safari.Chrome.Firefox和Opera浏览器中是否正常,IE以前也有的,网站上说应微软的要求去掉了. Superpreview 这是为微软自己发布的跨浏览器测试工具,您可以同时查看您的网页在

11款超赞的浏览器兼容性测试工具

  对于前端开发工程师来说,确保代码在各种主流浏览器的各个版本中都能正常工作是件很费时的事情,幸运的是,有很多优秀的工具可以帮助测试浏览器的兼容性,让我们一起看看这些很棒的工具. Superpreview 这是为微软自己发布的跨浏览器测试工具,您可以同时查看您的网页在多个浏览器的呈现情况,对页面排版进行直观的比较. IETester 专门用于测试网页在IE浏览器各个版本中兼容性的工具,版本包含IE5.5至IE9的各个版本,很不错的一款工具,推荐. BrowserShots BrowserShot

浏览器兼容性测试,现在有没有一款软件能模拟主流浏览器(火狐,ie,google)

问题描述 浏览器兼容性测试,现在有没有一款软件能模拟主流浏览器(火狐,ie,google) 浏览器兼容性测试,现在有没有一款软件能模拟主流浏览器(火狐,ie,google) 解决方案 分别下载,然后进行测试.没有这样的软件 解决方案二: 一般是IE+chrome可以一起,Firefox没见过合并的