SD9013: 各浏览器对于 document、document.body、document.documentElement 对象的 onscroll 事件的支持存在差异
来源:互联网 发布:阿里云空间 客户端 编辑:程序博客网 时间:2024/04/30 13:49
标准参考
scroll 事件会在文档或一个元素滚动时触发。
有关 scroll 事件的详细资料:
参见:W3C DOM Level-2 规范
参见:W3C DOM Level-3 草案
问题描述
各浏览器 document、document.body、document.documentElement 对象的 onscroll 事件的支持存在差异。
造成的影响
为 document、document.body、document.documentElement 对象绑定 onscroll 事件后在不同浏览器中可能不会按预期触发相应的事件处理函数。
受影响的浏览器
问题分析
1.各浏览器对 document、document.body、document.documentElement 对象的 onscroll 事件支持情况
依次为 window、HTMLDivElement、document、document.body、document.documentElement 对象绑定 scroll 事件监听器,在触发滚动条事件后,将消息打印出来,最终可以汇总为下表:
2. 所有浏览器支持 window 对象的 scroll 事件
分析以下代码:
<script type="text/javascript"> window.onscroll = function(){ document.getElementById("info").innerHTML='OK'; };</script><div id="info" style="height:3000px;"></div>
- info 的高度设为 3000px,为了让浏览器出现滚动条,这样才能触发滚动事件。
- 如果 scroll 事件被触发,那么页面上会出现 "OK" 的文本。
在各浏览器下的输出:(移动滚动条后的截图)
可见,所有浏览器中的 window 对象都支持 scroll 事件。
3. 所有浏览器都支持普通 DIV 对象的 scroll 事件
分析以下代码:
<script language="javascript">window.onload = function() { document.getElementById("div1").onscroll = function() { document.getElementById("info").innerHTML = 'OK'; };}</script><div id="div1" style="width:100px; height:100px;border:1px solid red; overflow:scroll;"> <div id="info" style="height:3000px; width:20px;background:green;"></div></div>
- info 的高度设为3000px,为了让 div1 出现滚动条,这样才能触发滚动事件。
- 如果 scroll 事件被触发,那么绿色背景的 div1上会出现 "OK" 的文本。
在各浏览器下的输出:(移动滚动条后的截图)
可见,所有浏览器中的普通 DIV 对象都支持 scroll 事件。
4. 各浏览器对 document 对象 scroll 事件的支持
分析以下代码:
<script type="text/javascript"> window.onload = function() { document.onscroll = function() { document.getElementById("info").innerHTML = 'OK'; }; }</script><div id="info" style="height:3000px;"></div>
- info 的高度设为 3000px,为了让 div1 出现滚动条,这样才能触发滚动事件。
- 如果 scroll 事件被触发,那么页面上会出现 "OK" 的文本。
在各浏览器下的输出:(移动滚动条后的截图)
可见,在IE6(Q) IE7 IE8(Q) Opera 中,document.body 对象支持 scroll 事件。其他浏览器中不支持。
5. 各浏览器对 document.body 对象 scroll 事件的支持
分析以下代码:
<script type="text/javascript"> window.onload = function() { document.body.onscroll = function() { document.getElementById("info").innerHTML = 'OK'; }; }</script><div id="info" style="height:3000px;"></div>
- info 的高度设为 3000px,为了让 div1 出现滚动条,这样才能触发滚动事件。
- 如果 scroll 事件被触发,那么页面上会出现 "OK" 的文本。
在各浏览器下的输出:(移动滚动条后的截图)
可见,在 IE6(Q) IE7 IE8(Q) Opera 中,document.body 对象支持 scroll 事件。其他浏览器中不支持。
6. 各浏览器对 document.documentElement 对象 scroll 事件的支持
分析以下代码:
<script type="text/javascript"> window.onload = function() { document.documentElement.onscroll = function() { document.getElementById("info").innerHTML = 'OK'; }; }</script><div id="info" style="height:3000px;"></div>
- info 的高度设为3000px,为了让 div1 出现滚动条,这样才能触发滚动事件。
- 如果 scroll 事件被触发,那么页面上会出现 "OK" 的文本。
在各浏览器下的输出:(移动滚动条后的截图)
可见,在 IE6(S) IE7(S) IE8(S) 中,document.documentElement 对象支持 scroll 事件。其他浏览器中不支持。
解决方案
在给整个浏览器窗口绑定滚动事件 (scroll) 的时候,绑定到 window 对象上。
参见
知识库
- ...
相关问题
- ...
测试环境
IE7
IE8
Firefox 3.6
Chrome 4.0.302.3 dev
Safari 4.0.4
Opera 10.60
SD9013-2.html
SD9013-3.html
SD9013-4.html
SD9013-5.html
关键字
window document scroll onscroll 滚动
- SD9013: 各浏览器对于 document、document.body、document.documentElement 对象的 onscroll 事件的支持存在差异
- 各浏览器对 document、document.body、document.documentElement 对象的 onscroll 事件支持情况
- 各浏览器对document.body.onscroll,window.onscroll,document.documentElement.onscroll的兼容性
- 各浏览器对使用 document.id 和 document.name 获取对象的支持存在差异
- document.body 和 document.documentElement 的区别
- document.body和document.documentElement 的区别
- document.body 和 document.documentElement 的区别
- document.body和document.documentElement的区别
- document.body 和 document.documentElement 的区别
- document.body 和 document.documentElement 的区别
- document.body和document.documentElement的比较
- document.documentElement和document.body的区别
- document.documentElement和document.body的区别
- document.body和document.documentElement的比较
- document.documentElement和document.body的区别
- document.documentElement和document.body的区别
- document.documentElement和document.body的区别
- document.body和document.documentElement的区别
- 设计模式-适配器模式
- javaweb项目+域名+tomcat 发布
- Xshell 安装
- HDU 2157 How many ways?? 矩阵快速幂求A经过K个点到B方案数
- V4L2视频应用程序编程架构
- SD9013: 各浏览器对于 document、document.body、document.documentElement 对象的 onscroll 事件的支持存在差异
- 亚马逊Fire TV将刺激苹果推出新款Apple TV
- TextView中使用一个字符串替换字符串str中start到end的子字符串
- ios笔试题
- Linux学习笔记之——用户、用户组、文件属性权限、目录概念
- 【中国制造】能讯半导体发布用于LTE基站的国产氮化镓微波晶体管
- Ubuntu 12.04更新源
- 获取设备唯一识别码和Mac地址
- Android示例代码:如何实现一个文字列表