JavaScript 滚轮事件使用说明


Posted in Javascript onMarch 07, 2010

不过遗憾的是各浏览器都不尽相同。

一) 事件名称不相同
IE, KHTML(Safari, Chrome), Opera对应的事件名称是 "mousewheel"。而 Gecko(Firefox, Netscape) 对应的事件名称是 "DOMMouseScroll"。

二) 事件对象的属性不一样
有时我们需要知道用户是向上滚了还是向下滚了。例如我们有一个响应滚动事件的函数:

function wheelHandle(e) { 
if(e.wheelDelta) {// IE, KHTML, Opera 
alert(e.wheelDelta > 0 ? '向上滚' : '向下滚'); 
} else { // Gecko 
alert(e.detail < 0 ? '向上滚' : '向下滚'); 
} 
}

IE, KHTML 支持 e.wheelDelta ,大于 0 为向上滚动,小于 0 为向下滚动。Gecko 支持 e.detail,小于 0 为向上滚动,大于 0 为向上滚动,跟前面的相反。而 Opera 比较牛,两种都支持。
下面给出一个注册滚轮事件的函数做参考:
/** 
* 注册滚轮事件函数 
* @param element : 注册的事件对象 
* @param wheelHandle : 注册事件函数 
*/ 
function addScrollListener(element, wheelHandle) { 
if(typeof element != 'object') return; 
if(typeof wheelHandle != 'function') return; 
// 监测浏览器 
if(typeof arguments.callee.browser == 'undefined') { 
var user = navigator.userAgent; 
var b = {}; 
b.opera = user.indexOf("Opera") > -1 && typeof window.opera == "object"; 
b.khtml = (user.indexOf("KHTML") > -1 || user.indexOf("AppleWebKit") > -1 || user.indexOf("Konqueror") > -1) && !b.opera; 
b.ie = user.indexOf("MSIE") > -1 && !b.opera; 
b.gecko = user.indexOf("Gecko") > -1 && !b.khtml; 
arguments.callee.browser = b; 
} 
if(element == window) 
element = document; 
if(arguments.callee.browser.ie) 
element.attachEvent('onmousewheel', wheelHandle); 
else 
element.addEventListener(arguments.callee.browser.gecko ? 'DOMMouseScroll' : 'mousewheel', wheelHandle, false); 
}

注册一个监听事件:
var display = document.getElementById('display'); 
function wheelHandle(e) { 
if(e.wheelDelta) {// IE, KHTML, Opera 
display.innerHTML = (e.wheelDelta > 0 ? '上' : '下'); 
} else { // Gecko 
display.innerHTML = (e.detail < 0 ? '上' : '下'); 
} 
} 
addScrollListener(window, wheelHandle);
Javascript 相关文章推荐
来自国外的页面JavaScript文件优化
Dec 08 Javascript
再论Javascript下字符串连接的性能
Mar 05 Javascript
简短几句jquery代码的实现一个图片向上滚动切换
Sep 02 Javascript
JQquery的一些使用心得分享
Aug 01 Javascript
jQuery拖动div、移动div、弹出层实现原理及示例
Apr 08 Javascript
jquery实现select选中行、列合计示例
Apr 25 Javascript
正则表达式替换html元素属性的方法
Nov 26 Javascript
JS去除字符串中空格的方法
Feb 14 Javascript
javascript获取图片的top N主色值方法详解
Jan 26 Javascript
React key值的作用和使用详解
Aug 23 Javascript
Angular Excel 导入与导出的实现代码
Apr 17 Javascript
VUE 实现动态给对象增加属性,并触发视图更新操作示例
Nov 29 Javascript
javascript下4个跨浏览器必备的函数
Mar 07 #Javascript
Zero Clipboard js+swf实现的复制功能使用方法
Mar 07 #Javascript
GWT中复制到剪贴板 js+flash实现复制 兼容性比较好
Mar 07 #Javascript
javascript实现面向对象类的功能书写技巧
Mar 07 #Javascript
js实现的真正的iframe高度自适应(兼容IE,FF,Opera)
Mar 07 #Javascript
jQuery html() in Firefox (uses .innerHTML) ignores DOM changes
Mar 05 #Javascript
Jquery Validation插件防止重复提交表单的解决方法
Mar 05 #Javascript
You might like
js和php邮箱地址验证的实现方法
2014/01/09 PHP
PHP登录验证码的实现与使用方法
2016/07/07 PHP
JavaScript使用prototype定义对象类型
2007/02/07 Javascript
用一段js程序来实现动画功能
2007/03/06 Javascript
把jquery 的dialog和ztree结合实现步骤
2013/08/02 Javascript
jqGrid随窗口大小变化自适应大小的示例代码
2013/12/28 Javascript
将HTML的左右尖括号等转义成实体形式的两种实现方式
2014/05/04 Javascript
浅析Node在构建超媒体API中的作用
2014/07/30 Javascript
Grunt入门教程(自动任务运行器)
2015/08/06 Javascript
分享12个非常实用的JavaScript小技巧
2016/05/11 Javascript
Vue.js Ajax动态参数与列表显示实现方法
2016/10/20 Javascript
原生js代码实现图片放大境效果
2016/10/30 Javascript
QRCode.js:基于JQuery的生成二维码JS库的使用
2017/06/23 jQuery
vue项目国际化vue-i18n的安装使用教程
2018/03/14 Javascript
QQ跳转支付宝并自动领红包脚本(最新)
2018/06/22 Javascript
基于vue实现web端超大数据量表格的卡顿解决
2019/04/02 Javascript
vue解决花括号数据绑定不成功的问题
2019/10/30 Javascript
Python求解平方根的方法
2015/03/11 Python
Python 的描述符 descriptor详解
2016/02/27 Python
python处理xml文件的方法小结
2017/05/02 Python
python 使用poster模块进行http方式的文件传输到服务器的方法
2019/01/15 Python
python+requests接口压力测试500次,查看响应时间的实例
2020/04/30 Python
Python内存泄漏和内存溢出的解决方案
2020/09/26 Python
CSS3中颜色线性渐变实战
2015/07/18 HTML / CSS
AmazeUI 手机版页面的顶部导航条Header与侧边导航栏offCanvas的示例代码
2020/08/19 HTML / CSS
伊利莎白雅顿官网:Elizabeth Arden
2016/10/10 全球购物
Windows和Linux动态库应用异同
2016/07/28 面试题
员工自我鉴定范文
2013/10/06 职场文书
应付会计岗位职责
2013/12/12 职场文书
营销总监岗位职责范本
2014/02/26 职场文书
群教班子对照检查材料
2014/08/26 职场文书
2014年测量员工作总结
2014/12/12 职场文书
世界文化遗产导游词
2015/02/13 职场文书
background-position百分比原理详解
2021/05/08 HTML / CSS
Python Pandas知识点之缺失值处理详解
2021/05/11 Python
如何在Mac上通过docker配置PHP开发环境
2021/05/29 PHP