javascript实现禁止鼠标滚轮事件


Posted in Javascript onJuly 24, 2015

平时我们兼容什么东西总是在调整低版本IE的兼容性,但是这回不是因为低版本浏览器不给力。而是因为火狐给力过头了,完全不顾其它浏览器的感受标新立异了。除了火狐之外,所有的浏览器都可以使用MouseWheel事件来处理鼠标滚轮的响应。但是火狐却偏偏不支持MouseWheel,而使用无厘头的DOMMouseScroll,这玩意儿除了火狐以外其它浏览器都不兼容。也就是说,对于鼠标滚轮事件的处理,火狐只能使用DOMMouseScroll。而非火狐则只能使用MouseWheel。这两种事件实现的原理不同,他们处理的数据也不同。

var firefox = navigator.userAgent.indexOf('Firefox') != -1;
firefox ? img.addEventListener('DOMMouseScroll', MouseWheel, false) : 
     (img.onmousewheel = MouseWheel);
 
  function MouseWheel(e) {
    e = e || window.event;
 
    if (e.stopPropagation) e.stopPropagation();
    else e.cancelBubble = true;
     
    if (e.preventDefault) e.preventDefault();
    else e.returnValue = false;
 
  }

我们来看个完整的代码

<!DOCTYPE html>
<style>
span {font:14px/20px 微软雅黑;}
#counter {
 width:50px;height:20px;
 border:1px solid #CCC;
 background:#F9F9F9;
 font:14px/20px Consolas;
 text-align:center;
 margin:10px;
}
</style>
<span>使用鼠标滚轮调整数值大小</span><br/>
<div id="counter">0</div>
<script>
//判断浏览器
var isIE=navigator.userAgent.match(/MSIE (\d)/i);
isIE=isIE?isIE[1]:undefined;
var isFF=/FireFox/i.test(navigator.userAgent);
//获取元素
var counter=document.getElementById("counter");
//鼠标滚轮事件
if(isIE<9) //传统浏览器使用MouseWheel事件
 counter.attachEvent("onmousewheel",function(){
  //计算鼠标滚轮滚动的距离
  //一格3行,每行40像素,所以除以120
  var v=event.wheelDelta/120;
  counter.innerHTML=counter.innerHTML*1+v;
  //阻止浏览器默认方法
  return false;
 });
else if(!isFF) //除火狐外的现代浏览器也使用MouseWheel事件
 counter.addEventListener("mousewheel",function(e){
  //计算鼠标滚轮滚动的距离
  var v=e.wheelDelta/120;
  counter.innerHTML=counter.innerHTML*1+v;
  //阻止浏览器默认方法
  e.preventDefault();
 },false);
else //奇葩的火狐使用DOMMouseScroll事件
 counter.addEventListener("DOMMouseScroll",function(e){
  //计算鼠标滚轮滚动的距离
  //一格是3行,但是要注意,这里和像素不同的是它是负值
  var v=-e.detail/3;
  counter.innerHTML=counter.innerHTML*1+v;
  //阻止浏览器默认方法
  e.preventDefault();
 },false);
</script>

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
JQuery中对Select的option项的添加、删除、取值
Aug 25 Javascript
js时间戳格式化成日期格式的多种方法
Nov 11 Javascript
判断一个对象是否为jquery对象的方法
Mar 12 Javascript
原生JavaScript+LESS实现瀑布流
Dec 12 Javascript
有效提高JavaScript执行效率的几点知识
Jan 31 Javascript
jQuery与getJson结合的用法实例
Aug 07 Javascript
详解Sea.js中Module.exports和exports的区别
Feb 12 Javascript
js 单引号替换成双引号,双引号替换成单引号的实现方法
Feb 16 Javascript
jQuery实现节点的追加、替换、删除、复制功能示例
Jul 11 jQuery
vue mint-ui学习笔记之picker的使用
Oct 11 Javascript
Vant的安装和配合引入Vue.js项目里的方法步骤
Dec 05 Javascript
基于JS实现简单滑块拼图游戏
Oct 12 Javascript
Css3制作变形与动画效果
Jul 24 #Javascript
四种参数传递的形式——URL,超链接,js,form表单
Jul 24 #Javascript
基于JS实现的倒计时程序实例
Jul 24 #Javascript
可以浮动某个物体的jquery控件用法实例
Jul 24 #Javascript
javascript比较两个日期相差天数的方法
Jul 24 #Javascript
JAVA四种基本排序方法实例总结
Jul 24 #Javascript
轻量级javascript 框架Backbone使用指南
Jul 24 #Javascript
You might like
基于文本的搜索
2006/10/09 PHP
php面向对象全攻略 (四)构造方法与析构方法
2009/09/30 PHP
PHP字符串处理的10个简单方法
2010/06/30 PHP
Java中final关键字详解
2015/08/10 PHP
PHP+JS三级菜单联动菜单实现方法
2016/02/24 PHP
Laravel中Facade的加载过程与原理详解
2017/09/22 PHP
JavaScript将相对地址转换为绝对地址示例代码
2013/07/19 Javascript
JS.GetAllChild(element,deep,condition)使用介绍
2013/09/21 Javascript
Textarea根据内容自适应高度
2013/10/28 Javascript
JavaScript的9种继承实现方式归纳
2015/05/18 Javascript
简单纯js实现点击切换TAB标签实例
2015/08/23 Javascript
Angularjs 实现一个幻灯片示例代码
2016/09/08 Javascript
js选项卡的制作方法
2017/01/23 Javascript
原生js轮播(仿慕课网)
2017/02/15 Javascript
微信小程序 数据绑定及运算的简单实例
2017/09/20 Javascript
微信小程序时间控件picker view使用详解
2018/12/28 Javascript
JS/CSS实现字符串单词首字母大写功能
2019/09/03 Javascript
12 种使用Vue 的最佳做法
2020/03/30 Javascript
python实现对输入的密文加密
2019/03/20 Python
Python将主机名转换为IP地址的方法
2019/08/14 Python
python爬虫 线程池创建并获取文件代码实例
2019/09/28 Python
windows上彻底删除jupyter notebook的实现
2020/04/13 Python
python安装第三方库如xlrd的方法
2020/10/31 Python
python编程的核心知识点总结
2021/02/08 Python
浅析与CSS3的loading动画加载相关的transition优化
2015/05/18 HTML / CSS
美国便宜的横幅和标志印刷在线:Best of Signs
2019/05/29 全球购物
新浪微博实习心得体会
2014/01/27 职场文书
职务聘任书范文
2014/03/29 职场文书
法人任命书范本
2014/06/04 职场文书
司法局火灾防控方案
2014/06/05 职场文书
大学团日活动总结书
2015/05/11 职场文书
幼儿园园长工作总结2015
2015/05/25 职场文书
分析MySQL优化 index merge 后引起的死锁
2022/04/19 MySQL
Python中的matplotlib绘制百分比堆叠柱状图,并为每一个类别设置不同的填充图案
2022/04/20 Python
JAVA springCloud项目搭建流程
2022/05/11 Java/Android
windows11选中自动复制怎么开启? Win11自动复制所选内容的方法
2022/07/23 数码科技