html中鼠标滚轮事件onmousewheel的处理方法


Posted in Javascript onNovember 11, 2016

滚轮事件是不同浏览器会有一点点区别,一个像Firefox使用DOMMouseScroll ,ff也可以使用addEventListener方法绑定DomMouseScroll事件,其他的浏览器滚轮事件使用mousewheel,下面我来给大家具体介绍。

Firefox使用DOMMouseScroll,其他的浏览器使用mousewheel。滚动事件触发时Firefox使用detail属性捕捉滚轮信息,其他的浏览器使用wheelDelta。不知道为何在该问题上其他厂商和微软的如此一致。Firefox可以使用addEventListener方法绑定DomMouseScroll事件。

elem.addEventListener(‘DOMMouseScroll', func, false);IE和其他的主流浏览器可以使用传统的事件绑定模型。但不要使用IE专有的attachEvent方法,其他主流浏览器并不识别微软的这个方法。

Firefox 鼠标滚轮向上滚动是-3,向下滚动是3

IE 鼠标滚轮向上滚动是120,向下滚动是-120

Safari 鼠标滚轮向上滚动是360,向下滚动是-360

Opera 鼠标滚轮向上滚动是120,向下滚动是-120

Chrome 鼠标滚轮向上滚动是120,向下滚动是-120

有人在Safari下做了一些测试:”只是滚动一圈的话,值为+-0.1,如果滚动地稍微快点的话(多滚动几圈),这个值也会变大。 这是因为Mac OS下有鼠标滚轮加速功能。滚动一次,浏览器滚动1像素,滚动3次,浏览器却滚动30像素”。同时他也对Camino(基于Gecko的内核引擎)进行研究:“与Safari相似(+- 0.3 to +-Infinity),虽然使用了与firefox相同的内核引擎,但结果这个delta值却只在+-2.666666里浮动,无论滚动速度如何

其中经我测试,IE/Opera属于同一类型,使用attachEvent即可添加滚轮事件。

/*IE注册事件*/  
if(document.attachEvent){  
  document.attachEvent('onmousewheel',scrollFunc);  
}

Firefox使用addEventListener添加滚轮事件

 

/*Firefox注册事件*/  
if(document.addEventListener){  
  document.addEventListener('DOMMouseScroll',scrollFunc,false);  
}

 Safari与Chrome属于同一类型,可使用HTML DOM方式添加事件

window.onmousewheel=document.onmousewheel=scrollFunc;//IE/Opera/Chrome

其中除Firefox外其余均可使用HTML DOM方式添加事件,因此添加事件使用以下方式

/*注册事件*/  
if(document.addEventListener){  
  document.addEventListener('DOMMouseScroll',scrollFunc,false);  
}//W3C  
window.onmousewheel=document.onmousewheel=scrollFunc;//IE/Opera/Chrome

detail与wheelDelta

判断滚轮向上或向下在浏览器中也要考虑兼容性,现在五大浏览器(IE、Opera、 Safari、Firefox、Chrome)中Firefox 使用detail,其余四类使用wheelDelta;两者只在取值上不一致,代表含义一致,detail与wheelDelta只各取两个 值,detail只取±3,wheelDelta只取±120,其中正数表示为向上,负数表示向下。

<p style="border-width:0px; padding-top:0px; padding-bottom:0px; margin-top:0px; margin-bottom:8px; list-style:none; text-indent:2em"><label for="wheelDelta"> 滚动值:</label>(IE/Opera)<input type="text" id="wheelDelta" style="border-width:0px; padding-top:0px; padding-bottom:0px; margin:0px; list-style:none"></p> 
<p style="border-width:0px; padding-top:0px; padding-bottom:0px; margin-top:0px; margin-bottom:8px; list-style:none; text-indent:2em"><label for="detail"> 滚动值:(Firefox)</label><input type="text" id="detail" style="border-width:0px; padding-top:0px; padding-bottom:0px; margin:0px; list-style:none"></p> 
<script type="text/javascript"> 
  var oTxt = document.getElementById("txt"); 
  var scrollFunc = function (e) { 
    var direct = 0; 
    ee = e || window.event; 
 
    var t1 = document.getElementById("wheelDelta"); 
    var t2 = document.getElementById("detail"); 
    if (e.wheelDelta) {//IE/Opera/Chrome  
      t1.value = e.wheelDelta; 
    } else if (e.detail) {//Firefox  
      t2.value = e.detail; 
    } 
    ScrollText(direct); 
  } 
  /*注册事件*/ 
  if (document.addEventListener) { 
    document.addEventListener('DOMMouseScroll', scrollFunc, false); 
  }//W3C  
  window.onmousewheel = document.onmousewheel = scrollFunc; //IE/Opera/Chrome/Safari  
<p></script></p>

以上就是小编为大家带来的html中鼠标滚轮事件onmousewheel的处理方法全部内容了,希望大家多多支持三水点靠木~

Javascript 相关文章推荐
Jquery ajax执行顺序 返回自定义错误信息(实例讲解)
Nov 06 Javascript
js数组去重的5种算法实现
Nov 04 Javascript
微信小程序实现全局搜索代码高亮的示例
Mar 30 Javascript
详解给Vue2路由导航钩子和axios拦截器做个封装
Apr 10 Javascript
jQuery实现基本动画效果的方法详解
Sep 06 jQuery
JS跨域请求的问题解析
Dec 03 Javascript
微信小程序实现滑动切换自定义页码的方法分析
Dec 29 Javascript
微信小程序开发的基本流程步骤
Jan 31 Javascript
setTimeout与setInterval的区别浅析
Mar 23 Javascript
实现一个 Vue 吸顶锚点组件方法
Jul 10 Javascript
vue 框架下自定义滚动条(easyscroll)实现方法
Aug 29 Javascript
JavaScript实现消消乐的源代码
Jan 12 Javascript
Angularjs中的页面访问权限怎么设置
Nov 11 #Javascript
jquery.multiselect多选下拉框实现代码
Nov 11 #Javascript
通过扫描二维码打开app的实现代码
Nov 10 #Javascript
用JS动态设置CSS样式常见方法小结(推荐)
Nov 10 #Javascript
关于json字符串与实体之间的严格验证代码
Nov 10 #Javascript
jquery日历插件e-calendar升级版
Nov 10 #Javascript
Vue.js开发环境搭建
Nov 10 #Javascript
You might like
MyEclipse常用配置图文教程
2014/09/11 PHP
php实现encode64编码类实例
2015/03/24 PHP
jquery imgareaselect 使用利用js与程序结合实现图片剪切
2009/07/30 Javascript
理解JavaScript中的对象 推荐
2011/01/09 Javascript
原生js实现改变随意改变div属性style的名称和值的结果
2013/09/26 Javascript
ie 7/8不支持trim的属性的解决方案
2014/05/23 Javascript
js星星评分效果
2014/07/24 Javascript
Bootstrap Table使用心得总结
2016/11/29 Javascript
玩转Koa之核心原理分析
2018/12/29 Javascript
vue router导航守卫(router.beforeEach())的使用详解
2019/04/19 Javascript
jquery实现动态创建form并提交的方法示例
2019/05/27 jQuery
微信小程序基础教程之worker线程的使用方法
2019/07/15 Javascript
小程序怎样让wx.navigateBack更好用的方法实现
2019/11/01 Javascript
ES6使用新特性Proxy实现的数据绑定功能实例
2020/05/11 Javascript
[29:16]完美世界DOTA2联赛决赛日 Inki vs LBZS 第三场 11.08
2020/11/10 DOTA
Python命令行参数解析模块optparse使用实例
2015/04/13 Python
Python微信公众号开发平台
2018/01/25 Python
Python学习笔记之变量、自定义函数用法示例
2019/05/28 Python
Django框架组成结构、基本概念与文件功能分析
2019/07/30 Python
python 的 openpyxl模块 读取 Excel文件的方法
2019/09/09 Python
Python xlwings插入Excel图片的实现方法
2021/02/26 Python
Django后端按照日期查询的方法教程
2021/02/28 Python
Bergfreunde丹麦:登山装备网上零售商
2017/02/26 全球购物
红色连衣裙精品店:Red Dress Boutique
2018/08/11 全球购物
介绍一下Java的安全机制
2012/06/28 面试题
Ado与Ado.net的相同与不同
2014/12/08 面试题
《童年的发现》教学反思
2014/02/14 职场文书
大四毕业生自荐书
2014/07/05 职场文书
我的中国梦演讲稿600字
2014/08/19 职场文书
街道社区活动报告
2015/02/05 职场文书
2015年保安个人工作总结
2015/04/02 职场文书
活动总结书怎么写
2015/05/11 职场文书
CSS3 实现的图片悬停的切换按钮
2021/04/13 HTML / CSS
mysql使用instr达到in(字符串)的效果
2022/04/03 MySQL
python神经网络ResNet50模型
2022/05/06 Python
redis protocol通信协议及使用详解
2022/07/15 Redis