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代码(浏览器F12及VS中debugger关键字)
Jan 25 Javascript
js 判断计算字符串长度/判断空的简单方法
Aug 05 Javascript
jquery 日期控件datepicker属性详细解析
Nov 08 Javascript
document.compatMode的CSS1compat使用介绍
Apr 03 Javascript
JS合并数组的几种方法及优劣比较
Sep 19 Javascript
JavaScript的Polymer框架中dom-repeat与VM的相关操作
Jul 29 Javascript
JavaScript中文件上传API详解
Apr 01 Javascript
Bootstrap基本组件学习笔记之分页(12)
Dec 08 Javascript
js实现日历与定时器
Feb 22 Javascript
vue-router相关基础知识及工作原理
Mar 16 Javascript
ant-design-vue中tree增删改的操作方法
Nov 03 Javascript
JavaScript手写数组的常用函数总结
Nov 22 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
雄兵连:天使彦天使彦为爱折翼,彦和炙心同时念动的誓言!
2020/03/02 国漫
PHP教程 变量定义
2009/10/23 PHP
destoon在360浏览器下出现用户被强行注销的解决方法
2014/06/26 PHP
ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例
2014/07/22 PHP
Win10 下安装配置IIS + MySQL + nginx + php7.1.7
2017/08/04 PHP
php使用mysqli和pdo扩展,测试对比连接mysql数据库的效率完整示例
2019/05/09 PHP
如何实现JS函数的重载
2006/09/22 Javascript
prototype Element学习笔记(Element篇三)
2008/10/26 Javascript
利用JavaScript检测CPU使用率自己写的
2014/03/22 Javascript
javascript实现2048游戏示例
2014/05/04 Javascript
深入理解JavaScript系列(39):设计模式之适配器模式详解
2015/03/04 Javascript
深入理解JS addLoadEvent函数
2016/05/20 Javascript
jQuery动态修改字体大小的方法【测试可用】
2016/09/09 Javascript
概述一个页面从输入URL到页面加载完的过程
2016/12/16 Javascript
webuploader模态框ueditor显示问题解决方法
2016/12/27 Javascript
js事件冒泡与事件捕获详解
2017/02/20 Javascript
老生常谈js中0到底是 true 还是 false
2017/03/08 Javascript
React Component存在的几种形式详解
2018/11/06 Javascript
详解Vue中watch的详细用法
2018/11/28 Javascript
JSON是什么?有哪些优点?JSON和XML的区别?
2019/04/29 Javascript
vue-router结合vuex实现用户权限控制功能
2019/11/14 Javascript
JS实现进度条动态加载特效
2020/03/25 Javascript
基于vue3.0.1beta搭建仿京东的电商H5项目
2020/05/06 Javascript
一行JavaScript代码如何实现瀑布流布局
2020/12/11 Javascript
[27:39]Ti4 循环赛第二日 LGD vs Fnatic
2014/07/11 DOTA
python爬虫_微信公众号推送信息爬取的实例
2017/10/23 Python
Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
2018/04/18 Python
用TensorFlow实现戴明回归算法的示例
2018/05/02 Python
Python实现识别图片内容的方法分析
2018/07/11 Python
python中break、continue 、exit() 、pass终止循环的区别详解
2019/07/08 Python
CentOS 7如何实现定时执行python脚本
2020/06/24 Python
利用HTML5的新特点实现图片文件异步上传
2014/05/29 HTML / CSS
浅谈html5之sse服务器发送事件EventSource介绍
2017/08/28 HTML / CSS
教师岗位职责
2015/02/03 职场文书
趣味运动会简讯
2015/07/20 职场文书
Oracle数据库中通用的函数实例详解
2022/03/25 Oracle