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 相关文章推荐
符合W3C网页标准的iframe标签的使用方法
Jul 19 Javascript
javascript 解析url的search方法
Feb 09 Javascript
动态创建样式表在各浏览器中的差异测试代码
Sep 13 Javascript
angularJS 入门基础
Feb 09 Javascript
深入理解javascript作用域第二篇之词法作用域和动态作用域
Jul 24 Javascript
基于vue的下拉刷新指令和滚动刷新指令
Dec 23 Javascript
Vue.js 插件开发详解
Mar 29 Javascript
javascript 跨域问题以及解决办法
Jul 17 Javascript
vue使用自定义icon图标的方法
May 14 Javascript
配置node服务器并且链接微信公众号接口配置步骤详解
Jun 21 Javascript
jquery实现直播弹幕效果
Nov 28 jQuery
解决antd的Form组件setFieldsValue的警告问题
Oct 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
各种咖啡的英文名子是什么
2021/03/03 新手入门
php adodb连接带密码access数据库实例,测试成功
2008/05/14 PHP
PHP Directory 函数的详解
2013/03/07 PHP
跟我学Laravel之视图 &amp; Response
2014/10/15 PHP
PHP基于phpqrcode生成带LOGO图像的二维码实例
2015/07/10 PHP
CodeIgniter多语言实现方法详解
2016/01/20 PHP
PHP程序员学习使用Swoole的理由
2018/06/24 PHP
PDO::errorCode讲解
2019/01/28 PHP
JavaScript判断一个URL链接是否有效的实现方法
2011/10/08 Javascript
jQuery提交表单ajax查询实例代码
2012/10/07 Javascript
下拉菜单点击实现连接跳转功能的js代码
2013/05/19 Javascript
利用window.name实现windowStorage代码分享
2014/01/02 Javascript
浅谈类似于(function(){}).call()的js语句
2015/03/30 Javascript
zepto与jquery的区别及zepto的不同使用8条小结
2016/07/28 Javascript
Vue2.0用户权限控制解决方案
2017/11/29 Javascript
JavaScript实现读取与输出XML文件数据的方法示例
2018/06/05 Javascript
js技巧之十几行的代码实现vue.watch代码
2018/06/09 Javascript
解决webpack+Vue引入iView找不到字体文件的问题
2018/09/28 Javascript
JavaScript canvas实现跟随鼠标移动小球
2021/02/09 Javascript
[05:03]2018DOTA2亚洲邀请赛主赛事首日回顾
2018/04/04 DOTA
[06:49]2018DOTA2国际邀请赛寻真——VirtusPro傲视群雄
2018/08/12 DOTA
[47:43]完美世界DOTA2联赛PWL S3 Magama vs GXR 第二场 12.19
2020/12/24 DOTA
从零学Python之引用和类属性的初步理解
2014/05/15 Python
在Windows服务器下用Apache和mod_wsgi配置Python应用的教程
2015/05/06 Python
python 寻找list中最大元素对应的索引方法
2018/06/28 Python
详解PyTorch手写数字识别(MNIST数据集)
2019/08/16 Python
Python中base64与xml取值结合问题
2019/12/22 Python
Python 如何展开嵌套的序列
2020/08/01 Python
Python requests上传文件实现步骤
2020/09/15 Python
html5 初试 indexedDB(推荐)
2016/07/21 HTML / CSS
为数据库创建索引都需要注意些什么
2012/07/17 面试题
体操比赛口号
2014/06/10 职场文书
市场营销专业求职信
2014/06/17 职场文书
债务纠纷委托书范本
2014/10/14 职场文书
Java 垃圾回收超详细讲解记忆集和卡表
2022/04/08 Java/Android
Golang流模式之grpc的四种数据流
2022/04/13 Golang