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 相关文章推荐
jQuery中.live()方法的用法深入解析
Dec 30 Javascript
jQuery实现统计输入文字个数的方法
Mar 11 Javascript
jQuery调用WebMethod(PageMethod) NET2.0的方法
Apr 15 Javascript
js控制一个按钮是否可点击(可使用)disabled的实例
Feb 14 Javascript
vue-cli+webpack在生成的项目中使用bootstrap实例代码
May 26 Javascript
node.js基于express使用websocket的方法
Nov 09 Javascript
JS实现点击复选框变更DIV显示状态的示例代码
Dec 18 Javascript
Ionic学习日记实现验证码倒计时
Feb 08 Javascript
精读《Vue3.0 Function API》
May 20 Javascript
jQuery实现动态操作table行
Nov 23 jQuery
vue使用echarts图表自适应的几种解决方案
Dec 04 Vue.js
JS 4个超级实用的小技巧 提升开发效率
Oct 05 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
PHP开发微信支付的代码分享
2014/05/25 PHP
Zend Framework入门教程之Zend_Session会话操作详解
2016/12/08 PHP
laravel 出现command not found问题的解决方案
2019/10/23 PHP
PHP之header函数详解
2021/03/02 PHP
JavaScript获取数组最小值和最大值的方法
2015/06/09 Javascript
jQuery实现高亮显示网页关键词的方法
2015/08/07 Javascript
jQueryUI中的datepicker使用方法详解
2016/05/25 Javascript
JS正则子匹配实例分析
2016/12/22 Javascript
关于Node.js中Buffer的一些你可能不知道的用法
2017/03/28 Javascript
vue-cli的webpack模板项目配置文件分析
2017/04/01 Javascript
JS获取input[file]的值并显示在页面的实现方法
2018/03/09 Javascript
NodeJS 中Stream 的基本使用
2018/07/30 NodeJs
微信小程序中this.data与this.setData的区别详解
2018/09/17 Javascript
React如何实现浏览器打印部分内容详析
2019/05/19 Javascript
微信小程序数据统计和错误统计的实现方法
2019/06/26 Javascript
vue-cli随机生成port源码的方法
2019/09/02 Javascript
解决Python中由于logging模块误用导致的内存泄露
2015/04/23 Python
Python找出文件中使用率最高的汉字实例详解
2015/06/03 Python
python从入门到精通(DAY 3)
2015/12/20 Python
如何优雅地改进Django中的模板碎片缓存详解
2018/07/04 Python
python通过zabbix api获取主机
2018/09/17 Python
Python FtpLib模块应用操作详解
2019/12/12 Python
Python环境下安装PyGame和PyOpenGL的方法
2020/03/25 Python
amazeui页面分析之登录页面的示例代码
2020/08/25 HTML / CSS
德国柯吉澳趣味家居:Koziol
2017/08/24 全球购物
配置管理计划的主要内容有哪些
2014/06/20 面试题
养生餐厅创业计划书范文
2014/03/26 职场文书
文秘求职信范文
2014/04/10 职场文书
党委班子对照检查材料
2014/08/19 职场文书
草房子读书笔记
2015/06/29 职场文书
2019旅游导游工作总结
2019/06/27 职场文书
2019年最新感恩节祝福语(28句)
2019/11/27 职场文书
详解nginx.conf 中 root 目录设置问题
2021/04/01 Servers
CSS3 天气图标动画效果
2021/04/06 HTML / CSS
Python Pandas pandas.read_sql函数实例用法
2021/06/21 Python
Lombok的详细使用及优缺点总结
2021/07/15 Java/Android