scrollTop的兼容性小结

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

在页面上加上了

<!DOCTYPE   HTML   PUBLIC   "-//W3C//DTD   HTML   4.01   Transitional//EN"   
  "http://www.w3.org/TR/html4/loose.dtd">

之后,document.body.scrollTop的值一直为0(在IE和FF下),网上有人改为document.documentElement.scrollTop就可以了,试用了一下真的OK了。

 

但是当换到Google浏览器时,问题又出来了,document.documentElement.scrollTop值一直为0!到是document.body.scroll的值正确了。

 

网上有解决方案如下:(http://www.codebit.cn/pub/html/javascript/tip/get_scroll_position/)

[javascript] view plaincopy

  1. <mce:script type="text/javascript"><!--  

  2.    

  3.    

  4. // 说明:用 Javascript 获取滚动条位置等信息   

  5. // 来源 :ThickBox 2.1    

  6. // 整理 :CodeBit.cn ( http://www.CodeBit.cn )   

  7.    

  8. function getScroll()    

  9. {   

  10.     var t, l, w, h;   

  11.        

  12.     if (document.documentElement && document.documentElement.scrollTop) {   

  13.         t = document.documentElement.scrollTop;   

  14.         l = document.documentElement.scrollLeft;   

  15.         w = document.documentElement.scrollWidth;   

  16.         h = document.documentElement.scrollHeight;   

  17.     } else if (document.body) {   

  18.         t = document.body.scrollTop;   

  19.         l = document.body.scrollLeft;   

  20.         w = document.body.scrollWidth;   

  21.         h = document.body.scrollHeight;   

  22.     }   

  23.     return { t: t, l: l, w: w, h: h };   

  24. }   

  25.    

  26. // --></mce:script>   

 

 

首先说明,这段代码是正确的。只是当document.documentElement和document.documentElement.scrollTop都有值,但是document.documentElement.scrollTop==0时,有点误导人,呵呵。

于是我改成如下:

 

[javascript] view plaincopy

  1. var top = document.body.scrollTop;  

  2. if(0==top){  

  3.     top = document.documentElement.scrollTop;  

  4. }  

  5. alert(top);  

 

 

后来发现

var top = document.body.scrollTop | document.documentElement.scrollTop;

 

这样更简单,而且在我的几种浏览器下也都OK。。。。。

 


转载于:https://my.oschina.net/122612475/blog/313478

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/546105.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

stl标准模板库_C ++标准模板库(STL)中的数组及其常用功能

stl标准模板库"array" is a container in C STL, which has fixed size, which is defined in "array" header. “ array”是C STL中的一个容器&#xff0c;具有固定大小&#xff0c;在“ array”标头中定义。 Declaration: 宣言&#xff1a; array <…

zoj 1074 To the MAX

见zoj 1074 参考了别人的思路才搞定。见http://blog.csdn.net/acm_davidcn/article/details/5834454 使用了最大连续子序列和的算法&#xff0c;虽然自己也知道这个算法&#xff0c;但是却没办法做到活学活用。 /* zoj 1074 To the Max */ #include <stdio.h> #inc…

阿里巴巴为什么让初始化集合时必须指定大小?

这是我的第 205 期分享作者 | 王磊来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;哈喽&#xff0c;亲爱的小伙伴们&#xff0c;技术学磊哥&#xff0c;进步没得说&#xff01;欢迎来到…

ios页面间跳转方式总结

转自&#xff1a;http://www.cnblogs.com/anywherego/p/3542202.html 下面以OldViewController(oldC)的按钮btn点击后跳转到NewViewController(newC)为例说明: 1.Storyboard的segues方式 鼠标点击按钮btn然后按住control键拖拽到newC页面&#xff0c;在弹出的segue页面中选择跳…

__asm___错误:“”前应有'=',',',',','asm'或'_attribute_'

__asm__A very common error in C programming language, it occurs when # is not used before the include. 这是C编程语言中非常常见的错误&#xff0c;当在include之前不使用&#xff03;时&#xff0c;就会发生此错误。 As we know that #include is a preprocessor dire…

Photoshop CS3 ICO 图标保存插件

最近编程发现&#xff0c;没有啥好看的图标文件于是&#xff0c;本人使用功能强大的ps&#xff0c;制作了图标文件做后发现&#xff0c;无法保存为ico图标文件在网上搜索了半天&#xff0c;终于从茫茫网海找到ico保存插件下载存放的地方是 PS根目录 即Adobe\Adobe Photoshop CS…

zoj 1005 jugs

题目内容见zoj1005 由于A&#xff0c;B互素且A的容量小于B&#xff0c;那么可以将B装满并且倒入A中&#xff0c;如果A被装满则将A中的内容全部清空&#xff0c;一直进行下去直到某一刻B中容量恰好等于目标的容量。这种方法能得到正确的结果&#xff0c;但是通常得不到最优结果…

啪啪打脸!领导说:try-catch要放在循环体外!

这是我的第 206 期分享作者 | 王磊来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;哈喽&#xff0c;亲爱的小伙伴们&#xff0c;技术学磊哥&#xff0c;进步没得说&#xff01;欢迎来到…

人类智商一般在多少左右?爱因斯坦的智商是多少?

智商 智商就是智力商数。智力通常叫智慧&#xff0c;也叫智能。是人们认识客观事物并运用知识解决实际问题的能力。智力包含多个方面&#xff0c;如观察力、记忆力、想象力、分析推断能力、思维能力、应变能力等。智力的高低通经常使用智力商数来表示&#xff0c;是用以标示智力…

软件项目与产品的区别与联系_软件产品和软件过程之间的区别和关系

软件项目与产品的区别与联系软件产品和软件过程 (Software product and Software process) Software product and Software process: These two words are the one which is mostly confused with each other. In this article, we are going to explain each of these in deta…

Oracle官方推荐的性能测试工具!简单、精准又直观!

这是我的第 207 期分享作者 | 武培轩来源 | 武培轩&#xff08;ID&#xff1a;wupeixuan404&#xff09;分享 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;磊哥在前面的所有性能优化的文章中都是用了这款性能测试工具——JMH&#xff0c;一直没来得及给大家…

系统美化 XP主题及其他

赢狗系统主题&#xff1a;下载马头桌名主题&#xff1a;下载windows美化大师&#xff1a;下载虽然电脑系统层出不穷但是仍对win xp有爱

zoj 3488 conic section

题目见zoj 3488 很简单的题目&#xff0c;却没能一次搞定&#xff0c;因为没看清楚题目中输入数据都是实数。 该题目考察浮点数的比较&#xff08;因为浮点数在计算机中存储是近似存储&#xff0c;所以不能直接将两个浮点数直接用大于或小于符号相比较&#xff09; /* zoj 3…

Hadoop开发第2期---虚拟机中搭建Linux

注&#xff1a;关于如何将hadoop源码导入Eclipse详见http://pan.baidu.com/s/1hq8ArUs 一、Hadoop配置软件&#xff08;我的电脑是Windows7旗舰--64bit&#xff09; 1. VMWare专用CentOS镜像(Centos是Linux操作系统的一种)2. VMware-workstation103. hadoop-1.1.2.tar.gz4. jdk…

c构造函数和析构函数_C ++构造函数,析构函数能力问题和答案(第2组)

c构造函数和析构函数C 构造函数和析构函数能力问题列表 (List of C Constructor and Destructor Aptitude Questions & Answers) 1) Constructor(s) which is/are added automatically with a class, if we do not create our own constructor? 1)如果我们不创建自己的构造…

看故事学知识,这篇Java代理的文章妙啊!

这是我的第 208 期分享作者 | java金融来源 | java金融&#xff08;ID&#xff1a;java4299&#xff09;分享 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;什么是代理代理模式是常用的java设计模式&#xff0c;他的特征是代理类与委托类有同样的接口&#x…

[下载]青岛交通旅游地图[download]

清闲无事 所以就把青岛地图扫描了一下有需要青岛旅游地图的可以下载the download 【下载】

Java Thread类的静态void sleep(long time_in_ms)方法,带示例

线程类静态无效睡眠(long time_in_ms) (Thread Class static void sleep(long time_in_ms)) This method is available in package java.lang.Thread.sleep(long time_in_ms). 软件包java.lang.Thread.sleep(long time_in_ms)中提供了此方法。 sleep(long time_in_ms) method i…

阿里《Java开发手册》中的 1 个bug!

这是我的第 210 期分享作者 | 王磊来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;本来打算写一篇《阿里巴巴为什么不允许日志输出时&#xff0c;使用字符串拼接&#xff1f;》的文章&a…

zoj 1006 do the untwist

题目见zoj 1006 或poj 1317 简单的解密算法&#xff0c;直接套用题目中公式即可。 /* zoj 1006 Do the Untwist */ #include <stdio.h> #include <string.h>#define MAXLEN 80 #define MAGICNUM 28char num2Char(int n); int char2Num(char c); int main(void)…