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 相关文章推荐
支持ie与FireFox的剪切板操作代码
Sep 28 Javascript
js下用层来实现select的title提示属性
Feb 23 Javascript
jQuery1.6 使用方法一
Nov 23 Javascript
浅谈JSON.parse()和JSON.stringify()
Jul 14 Javascript
过期软件破解办法实例详解
Jan 04 Javascript
JS与jQuery实现子窗口获取父窗口元素值的方法
Apr 17 jQuery
在AngularJs中设置请求头信息(headers)的方法及不同方法的比较
Sep 04 Javascript
微信小程序如何再次获取用户授权的方法
May 10 Javascript
js实现烟花特效
Mar 02 Javascript
javascript+Canvas实现画板功能
Jun 23 Javascript
JavaScript实现单点登录的示例
Sep 23 Javascript
Openlayers测量距离与面积的实现方法
Sep 25 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
Smarty Foreach 使用说明
2010/03/23 PHP
PHP获取photoshop写入图片文字信息的方法
2015/03/31 PHP
PHP 芝麻信用接入的注意事项
2016/12/01 PHP
PDO::inTransaction讲解
2019/01/28 PHP
使用Entrust扩展包在laravel 中实现RBAC的功能
2020/03/16 PHP
javascript实现动态增加删除表格行(兼容IE/FF)
2007/04/02 Javascript
javascript 设为首页与加入收藏兼容多浏览器代码
2011/01/11 Javascript
javascript字符串替换及字符串分割示例代码
2013/12/12 Javascript
node.js中的http.response.setHeader方法使用说明
2014/12/14 Javascript
了不起的node.js读书笔记之mongodb数据库交互
2014/12/22 Javascript
JQuery查找DOM节点的方法
2015/06/11 Javascript
JQuery EasyUI Layout 在from布局自适应窗口大小的实现方法
2016/05/28 Javascript
AngularJS ng-mousedown 指令
2016/08/02 Javascript
Bootstrap table 定制提示语的加载过程
2017/02/20 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(2)
2017/02/20 Javascript
EasyUI中的dataGrid的行内编辑
2017/06/22 Javascript
使用Node.js搭建静态资源服务详细教程
2017/08/02 Javascript
微信小程序之多文件下载的简单封装示例
2018/01/29 Javascript
vue forEach循环数组拿到自己想要的数据方法
2018/09/21 Javascript
laydate只显示时分 不显示秒的功能实现方法
2019/09/28 Javascript
jquery实现烟花效果(面向对象)
2020/03/10 jQuery
Python的Flask框架中SQLAlchemy使用时的乱码问题解决
2015/11/07 Python
Python基于二分查找实现求整数平方根的方法
2016/05/12 Python
分享一个pycharm专业版安装的永久使用方法
2019/09/24 Python
python实现猜数字游戏
2020/03/25 Python
利用pandas向一个csv文件追加写入数据的实现示例
2020/04/23 Python
Python Selenium截图功能实现代码
2020/04/26 Python
用python实现前向分词最大匹配算法的示例代码
2020/08/06 Python
教你如何用python操作摄像头以及对视频流的处理
2020/10/12 Python
python使用ctypes库调用DLL动态链接库
2020/10/22 Python
对Pytorch 中的contiguous理解说明
2021/03/03 Python
一套SQL笔试题
2016/08/14 面试题
财务会计人员岗位职责
2013/11/30 职场文书
中文教师求职信
2014/02/22 职场文书
学习党的群众路线剖析材料
2014/10/09 职场文书
党员干部作风建设思想汇报范文
2014/10/25 职场文书