各浏览器对document.body.onscroll,window.onscroll,document.documentElement.onscroll的兼容性
来源:互联网 发布:淘宝演出服 编辑:程序博客网 时间:2024/05/21 09:02
引入背景:
近期有个需要,浏览器滚到当前位置时显示动画效果,而页面又不是全屏滚动的,我用的是window.onscroll事件监控浏览器的滚动情况。
每当滑到当前位置时,这些光鲜艳丽的小图标开始随机跳动,并且不重复,播放完当前图片后1s后隐藏并播放下一个,并逐一隐藏,等播放一轮时,最后一个也不在页面上显示。
就这样重复播放。
刚开始用的是document.body.onscroll事件,但在Mac上有时不显示动画效果,window上可以。
于是就各种百度,最后查着一篇2010年的文章。都6年了肯定浏览器有升级,接下来就将我自己测试后的表达下吧,仅个人测试结果。
无疑的是document.body.onscroll, window.onscroll, document.documentElement.onscroll各浏览器兼容性都存在差异
探讨问题:
各浏览器对下边3个事件的兼容性:
document.body.onscroll, window.onscroll, document.documentElement.onscroll
开始讨论:
1.各浏览器兼容表
IE6
IE7
IE8
Firfox
Chrome
Safari
Opera
Q
S
Q
S
Q
S
Q
S
Q
S
Q
S
Q
S
window 对象
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
div 对象
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
document 对象
N
N
N
N
N
N
Y
Y
Y
Y
Y
Y
N
N
document.body 对象
Y
N
Y
Y
Y
N
N
N
N
N
N
N
Y
Y
document.documentElement 对象
N
Y
N
Y
N
Y
N
N
N
N
N
N
N
N
2.关于window.onscroll,div对象事件
如上图可知浏览器对window.onscroll事件全部支持
3.关于document.body.onscroll事件
document.body.onscroll = function() {};
经测试在safari上不支持此事件,里边的代码不能执行。
编写思路:
1. 将这些小动画放入数组中并动态传入页面显示,体添加setInterval(); 事件执行循环。
2. 添加window.onscroll事件,因考虑到各浏览器兼容性,需要判断多个滚动方法,
var winScroll = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
if (winScroll > 2300 && winScroll < 3500) { ... ...} 监听页面的滚动高度,这个范围是当前div基于页面的高度;
3. 每执行window.onscroll事件时都对将当前已播放完的div清除,也需要将setInterval()计时器清0,使用clearInterval();
4. 判断如果是当前滚动范围初始化随机播放图片的方法,else的话clearInterval()。
经过一系列调试,证明此方法可行。且都兼容。
因还没有上线,所以不能给大家上传项目查看了,看下图片吧。
以上仅是个人测试结果,如有异议,请指点,谢谢!
- 各浏览器对document.body.onscroll,window.onscroll,document.documentElement.onscroll的兼容性
- 各浏览器对 document、document.body、document.documentElement 对象的 onscroll 事件支持情况
- window.onscroll和document.body.onscroll的区别
- SD9013: 各浏览器对于 document、document.body、document.documentElement 对象的 onscroll 事件的支持存在差异
- window.onscroll兼容浏览器
- js的window.onscroll事件兼容各大浏览器
- js的window.onscroll事件兼容各大浏览器!
- js的window.onscroll事件兼容各大浏览器!
- window.onscroll 的优化写法
- window.onscroll无效问题
- 多个window.onscroll的解决方法
- 多个window.onscroll的解决方法
- DHTML的onScroll事件
- gallery的onScroll监听
- onscroll的用法
- 浅析window.onscroll=move以及window.onscroll=move()的区别
- 关于document.body、document.documentElement、window.pageYoffset
- window.onscroll = function(){}事件
- 查看端口占用并结束进程
- mysql 对取当前日期周一和周日语句的详细解析
- 排序( 冒泡 选择 插入 )
- 由删除要素属性引发的联想(api的很多东西本质上都是object,可以通过对object的操作来进行修改等)
- Android APP应用退到后台后再打开老是恢复到前台
- 各浏览器对document.body.onscroll,window.onscroll,document.documentElement.onscroll的兼容性
- Win10支持Ubuntu Linux Bash-apache+php+mysql环境搭建
- XML序列化
- 二维空间变换 MATLAB帮助翻译
- (问)关于spring Mail发送邮件问题
- Android Studio 打包发布apk
- HandlerThread的用法与自定义HandlerThread(2)
- 新型激光疗法望掀医疗革命
- 【慕课笔记】4-4 应用DOM4J及JDOM方式解析XML—JDOM解析时乱码的处理