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 相关文章推荐
javascript 多浏览器 事件大全
Mar 23 Javascript
基于jquery &amp; json的省市区联动代码
Jun 26 Javascript
Javascript中各种trim的实现详细解析
Dec 10 Javascript
JavaScript删除指定子元素代码实例
Jan 13 Javascript
在Mac OS上安装使用Node.js的项目自动化构建工具Gulp
Jun 18 Javascript
基于JS实现发送短信验证码后的倒计时功能(无视页面刷新,页面关闭不进行倒计时功能)
Sep 02 Javascript
Vue2.0用户权限控制解决方案的示例
Feb 10 Javascript
vue 项目地址去掉 #的方法
Oct 20 Javascript
vue-cli 3.x配置跨域代理的实现方法
Apr 12 Javascript
微信小程序 自定义弹窗实现过程(附代码)
Dec 05 Javascript
微信小程序实现加入购物车滑动轨迹
Nov 18 Javascript
JS实现九宫格拼图游戏
Jun 28 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 CURL获取邮箱地址的详解
2013/06/03 PHP
php中curl使用指南
2015/02/05 PHP
php文件包含目录配置open_basedir的使用与性能详解
2017/04/03 PHP
Mac下php 5升级到php 7的步骤详解
2017/04/26 PHP
Javascript 调试利器 Firebug使用详解六
2009/07/05 Javascript
JavaScript判断窗口是否最小化的代码(跨浏览器)
2010/08/01 Javascript
jquery 滚动条事件简单实例
2013/07/12 Javascript
js 获取radio按钮值的实例
2013/08/17 Javascript
jquery链式操作的正确使用方法
2014/01/06 Javascript
浅谈javascript原型链与继承
2015/07/13 Javascript
JavaScript面向对象之私有静态变量实例分析
2016/01/14 Javascript
js实现div在页面拖动效果
2016/05/04 Javascript
JavaScript知识点总结(十)之this关键字
2016/05/31 Javascript
详解AngularJS如何实现跨域请求
2016/08/22 Javascript
js实现定时进度条完成后切换图片
2017/01/04 Javascript
jQuery文字轮播特效
2017/02/12 Javascript
jQuery动态移除和添加背景图片的方法详解
2017/03/07 Javascript
Bootstrap框架建立树形菜单(Tree)的实例代码
2017/10/30 Javascript
基于openlayers4实现点的扩散效果
2020/08/17 Javascript
VUE解决微信签名及SPA微信invalid signature问题(完美处理)
2019/03/29 Javascript
详细分析vue表单数据的绑定
2020/07/20 Javascript
玩转python爬虫之URLError异常处理
2016/02/17 Python
python实现实时监控文件的方法
2016/08/26 Python
python连接mysql实例分享
2016/10/09 Python
Python模拟用户登录验证
2017/09/11 Python
django日志默认打印request请求信息的方法示例
2020/05/17 Python
麦德龙官方海外旗舰店:德国麦德龙超市
2017/12/23 全球购物
马来西亚领先的在线礼品店:Giftr
2018/08/23 全球购物
亚洲颇具影响力的男性在线购物零售商:His
2019/11/24 全球购物
Chinti & Parker官网:奢华羊绒女装和创新针织设计
2021/01/01 全球购物
放飞蜻蜓反思
2014/02/05 职场文书
试用期员工工作自我评价
2014/09/10 职场文书
基层党组织建设整改方案
2014/09/16 职场文书
赡养老人协议书范本
2015/08/06 职场文书
python-for x in range的用法(注意要点、细节)
2021/05/10 Python
深入理解 Golang 的字符串
2022/05/04 Golang