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 相关文章推荐
提高 DHTML 页面性能
Dec 25 Javascript
jquery ajax修改全局变量示例代码
Nov 08 Javascript
用Javascript获取页面元素的具体位置
Dec 09 Javascript
JavaScript框架(iframe)操作总结
Apr 16 Javascript
Jquery仿IGoogle实现可拖动窗口示例代码
Aug 22 Javascript
JavaScript中的索引数组、关联数组和静态数组、动态数组讲解
Nov 08 Javascript
js闭包实例汇总
Nov 09 Javascript
bootstrap datetimepicker实现秒钟选择下拉框
Jan 05 Javascript
微信小程序有旋转动画效果的音乐组件实例代码
Aug 22 Javascript
运用js实现图层拖拽的功能
May 24 Javascript
利用不到200行代码写一款属于你自己的js类库
Jul 08 Javascript
Vue实现浏览器打印功能的代码
Apr 17 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静态调用非静态方法的应用分析
2013/05/02 PHP
thinkPHP中U方法加密传递参数功能示例
2018/05/29 PHP
Laravel框架中集成MongoDB和使用详解
2019/10/17 PHP
javascript一些不错的函数脚本代码
2008/09/10 Javascript
jquery中使用$(#form).submit()重写提交表单无效原因分析及解决
2013/03/25 Javascript
jQuery中clearQueue()方法用法实例
2014/12/29 Javascript
JQuery限制复选框checkbox可选中个数的方法
2015/04/20 Javascript
js检测判断日期大于多少天的方法
2015/05/04 Javascript
JS获取当前脚本文件的绝对路径
2016/03/02 Javascript
jQuery获取访问者IP地址的方法(基于新浪API与QQ查询接口)
2016/05/25 Javascript
angular.JS实现网页禁用调试、复制和剪切
2017/03/31 Javascript
javascript兼容性(实例讲解)
2017/08/15 Javascript
详解Angular操作cookies方法
2018/06/01 Javascript
vue.js实现带日期星期的数字时钟功能示例
2018/08/28 Javascript
javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法
2020/05/14 Javascript
Vue如何循环提取对象数组中的值
2020/11/18 Vue.js
Python时区设置方法与pytz查询时区教程
2013/11/27 Python
Python常用随机数与随机字符串方法实例
2015/04/09 Python
python数据结构学习之实现线性表的顺序
2018/09/28 Python
django使用admin站点上传图片的实例
2019/07/28 Python
python实现对图片进行旋转,放缩,裁剪的功能
2019/08/07 Python
Python搭建代理IP池实现存储IP的方法
2019/10/27 Python
五分钟学会怎么用python做一个简单的贪吃蛇
2021/01/12 Python
使用CSS3中的calc()属性来以算式表达尺寸数值
2016/06/06 HTML / CSS
使用SVG实现提示框功能的示例代码
2020/06/05 HTML / CSS
韩国女装NO.1网店:STYLENANDA
2016/09/16 全球购物
SQL Server面试题
2016/10/17 面试题
施工安全协议书
2013/12/11 职场文书
临床医师专业个人自我评价
2014/01/08 职场文书
教师读书活动总结
2014/05/07 职场文书
群众路线调研报告范文
2014/11/03 职场文书
计划生育工作总结2015
2015/04/03 职场文书
起诉意见书范文
2015/05/19 职场文书
导游词之南迦巴瓦峰
2019/11/19 职场文书
python numpy中setdiff1d的用法说明
2021/04/22 Python
python中filter,map,reduce的作用
2022/06/10 Python