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 相关文章推荐
破除网页鼠标右键被禁用的绝招大全
Dec 27 Javascript
jquery方法+js一般方法+js面向对象方法实现拖拽效果
Aug 30 Javascript
jQuery父级以及同级元素查找介绍
Sep 04 Javascript
javascript setinterval 的正确语法如何书写
Jun 17 Javascript
基于javascript实现全屏漂浮广告
Mar 31 Javascript
JQuery点击行tr实现checkBox选中的简单实例
May 26 Javascript
JS返回只包含数字类型的数组实例分析
Dec 16 Javascript
JS原型与原型链的深入理解
Feb 15 Javascript
详解Vue组件之间的数据通信实例
Jun 17 Javascript
Angular5中调用第三方js插件的方法
Feb 26 Javascript
前后端如何实现登录token拦截校验详解
Sep 03 Javascript
详解用JS添加和删除class类名
Mar 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
PHP 木马攻击防御技巧
2009/06/13 PHP
PHP 页面编码声明方法详解(header或meta)
2010/03/12 PHP
php下通过curl抓取yahoo boss 搜索结果的实现代码
2011/06/10 PHP
一键生成各种尺寸Icon的php脚本(实例)
2017/02/08 PHP
php 读写json文件及修改json的方法
2018/03/07 PHP
javascript动态添加表格数据行(ASP后台数据库保存例子)
2010/05/08 Javascript
jquery下onpropertychange事件的绑定方法
2010/08/01 Javascript
JavaScript如何从listbox里同时删除多个项目
2013/10/12 Javascript
使用Chrome调试JavaScript的断点设置和调试技巧
2014/12/16 Javascript
Bootstrap每天必学之按钮
2015/11/26 Javascript
Jquery根据浏览器窗口改变调整大小的方法
2017/02/07 Javascript
js 数字、字符串、布尔值的转换方法(必看)
2017/04/07 Javascript
jquery实现图片跟随鼠标的实例
2017/10/17 jQuery
三分钟学会用ES7中的Async/Await进行异步编程
2018/06/14 Javascript
在react中使用vuex的示例代码
2018/07/30 Javascript
vue 项目中使用Loading组件的示例代码
2018/08/31 Javascript
详解JS取出两个数组中的不同或相同元素
2019/03/20 Javascript
JavaScript实现多张图片放大镜效果示例【不限定图片尺寸,rem单位】
2019/05/14 Javascript
Vue axios 将传递的json数据转为form data的例子
2019/10/29 Javascript
Vue解析带html标签的字符串为dom的实例
2019/11/13 Javascript
vue中的循环对象属性和属性值用法
2020/09/04 Javascript
javascript全局自定义鼠标右键菜单
2020/12/08 Javascript
JavaScript实现滑块验证解锁
2021/01/07 Javascript
Java 生成随机字符的示例代码
2021/01/13 Javascript
Python2.7简单连接与操作MySQL的方法
2016/04/27 Python
使用Python的Flask框架表单插件Flask-WTF实现Web登录验证
2016/07/12 Python
PyQt5每天必学之切换按钮
2020/08/20 Python
python批量创建指定名称的文件夹
2019/03/21 Python
Python Django 实现简单注册功能过程详解
2019/07/29 Python
使用 python pyautogui实现鼠标键盘控制功能
2019/08/04 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
2020/12/10 Python
使用css3实现超炫的loading加载动画效果
2014/05/07 HTML / CSS
linux面试题参考答案(10)
2013/11/04 面试题
小学四年级班主任工作经验交流材料
2015/11/02 职场文书
2016年秋季开学典礼新闻稿
2015/11/25 职场文书
方法汇总:Python 安装第三方库常用
2022/04/26 Python