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 相关文章推荐
json 定义
Jun 10 Javascript
js 新浪的一个图片播放图片轮换效果代码
Jul 15 Javascript
jquery cookie插件代码类
May 26 Javascript
IE下JS读取xml文件示例代码
Aug 05 Javascript
js实现图片旋转的三种方法
Apr 10 Javascript
一不小心就做错的JS闭包面试题
Nov 25 Javascript
轻松实现js图片预览功能
Jan 18 Javascript
json的使用小结
Jun 08 Javascript
BootStrap使用popover插件实现鼠标经过显示并保持显示框
Jun 23 Javascript
详解堆的javascript实现方法
Nov 29 Javascript
浅谈Vue.use的使用
Aug 29 Javascript
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
Sep 11 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
PHP中的extract的作用分析
2008/04/09 PHP
php5 pdo新改动加载注意事项
2008/09/11 PHP
apache mysql php 源码编译使用方法
2012/05/03 PHP
PHP更新购物车数量(表单部分/PHP处理部分)
2013/05/03 PHP
使用PHP实现蜘蛛访问日志统计
2013/07/05 PHP
PHP内核探索之变量
2015/12/22 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
2017/12/25 PHP
jquery实现的下拉和收缩效果示例
2014/08/21 Javascript
node.js中的path.normalize方法使用说明
2014/12/08 Javascript
JavaScript中的函数声明和函数表达式区别浅析
2015/03/27 Javascript
JS实现带圆弧背景渐变效果的导航菜单代码
2015/10/13 Javascript
javascript学习笔记_浅谈基础语法,类型,变量
2016/09/19 Javascript
详解为Angular.js内置$http服务添加拦截器的方法
2016/12/20 Javascript
jQuery实现Select下拉列表进行状态选择功能
2017/03/30 jQuery
详解AngularJS 路由 resolve用法
2017/04/24 Javascript
vue-cli脚手架config目录下index.js配置文件的方法
2018/03/13 Javascript
Vue下滚动到页面底部无限加载数据的示例代码
2018/04/22 Javascript
仿vue-cli搭建属于自己的脚手架的方法步骤
2019/04/17 Javascript
nodejs开发一个最简单的web服务器实例讲解
2020/01/02 NodeJs
Python字符串逐字符或逐词反转方法
2015/05/21 Python
python中pygame针对游戏窗口的显示方法实例分析(附源码)
2015/11/11 Python
python中使用正则表达式的后向搜索肯定模式(推荐)
2017/11/11 Python
python中plot实现即时数据动态显示方法
2018/06/22 Python
Python将文本去空格并保存到txt文件中的实例
2018/07/24 Python
Python + OpenCV 实现LBP特征提取的示例代码
2019/07/11 Python
python中tkinter的应用:修改字体的实例讲解
2019/07/17 Python
python实现各种插值法(数值分析)
2019/07/30 Python
Python 日期时间datetime 加一天,减一天,加减一小时一分钟,加减一年
2020/04/16 Python
使用Keras 实现查看model weights .h5 文件的内容
2020/06/09 Python
python3 使用ssh隧道连接mysql的操作
2020/12/05 Python
纯css3实现的动画按钮的实例教程
2014/11/17 HTML / CSS
css3 clip实现圆环进度条的示例代码
2018/02/07 HTML / CSS
中专毕业生个人职业生涯规划
2014/02/19 职场文书
利用Python网络爬虫爬取各大音乐评论的代码
2021/04/13 Python
深入探讨opencv图像矫正算法实战
2021/05/21 Python
python实现自定义日志的具体方法
2021/05/28 Python