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 构建客户/服务分离的链接模型中Table中的排序分析
Jan 22 Javascript
Extjs中ComboBox加载并赋初值的实现方法
Mar 22 Javascript
js中浮点型运算BUG的解决方法说明
Jan 06 Javascript
在JavaScript中操作时间之getUTCDate()方法的使用
Jun 10 Javascript
基于jQuery实现的美观星级评论打分组件代码
Oct 30 Javascript
给angular加上动画效遇到的问题总结
Feb 17 Javascript
JavaScript实现相册弹窗功能(zepto.js)
Jun 21 Javascript
gulp-uglify 与gulp.watch()配合使用时报错(重复压缩问题)
Aug 24 Javascript
Angular 2使用路由自定义弹出组件toast操作示例
May 10 Javascript
详解基于原生JS验证表单组件xy-form
Aug 20 Javascript
解决Idea、WebStorm下使用Vue cli脚手架项目无法使用Webpack别名的问题
Oct 11 Javascript
微信公众号服务器验证Token步骤图解
Dec 30 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
php实现转换ubb代码的方法
2015/06/18 PHP
基于php编程规范(详解)
2017/08/17 PHP
网页设计常用的一些技巧
2006/12/22 Javascript
JS,Jquery获取select,dropdownlist,checkbox下拉列表框的值(示例代码)
2014/01/11 Javascript
理运用命名空间让js不产生冲突避免全局变量的泛滥
2014/06/15 Javascript
JavaScript实现仿网易通行证表单验证
2015/05/25 Javascript
Angular 中 select指令用法详解
2016/09/29 Javascript
基于JS对象创建常用方式及原理分析
2017/06/28 Javascript
深入了解javascript 数组的sort方法
2018/06/01 Javascript
浅谈Vue.use的使用
2018/08/29 Javascript
vue3.0 CLI - 2.5 - 了解组件的三维
2018/09/14 Javascript
微信小程序环境下将文件上传到OSS的方法步骤
2019/05/31 Javascript
深入理解Vue keep-alive及实践总结
2019/08/21 Javascript
40行代码把Vue3的响应式集成进React做状态管理
2020/05/20 Javascript
[01:28]2014DOTA2国际邀请赛中国区预选赛四大豪门直升机抵达会场
2014/05/24 DOTA
[36:09]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
python动态加载变量示例分享
2014/02/17 Python
详解Python字符串对象的实现
2015/12/24 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
2019/07/03 Python
python里运用私有属性和方法总结
2019/07/08 Python
浅谈ROC曲线的最佳阈值如何选取
2020/02/28 Python
python使用paramiko实现ssh的功能详解
2020/03/06 Python
Python语言编写智力问答小游戏功能
2020/10/13 Python
工程造价自荐信
2013/10/09 职场文书
大学毕业生简单自荐信
2013/11/05 职场文书
企业演讲稿范文
2013/12/28 职场文书
全国道德模范事迹
2014/02/01 职场文书
家具促销活动方案
2014/02/16 职场文书
大三学年自我鉴定范文(3篇)
2014/09/28 职场文书
父亲婚礼答谢词
2015/01/04 职场文书
交警失职检讨书
2015/01/26 职场文书
2015年销售助理工作总结
2015/05/11 职场文书
严以修身专题学习研讨会发言材料
2015/11/09 职场文书
幼儿园国培研修日志
2015/11/13 职场文书
Go语言 go程释放操作(退出/销毁)
2021/04/30 Golang
Python中OpenCV实现查找轮廓的实例
2021/06/08 Python