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 定时器调用传递参数的方法
Nov 12 Javascript
jquery ajax 局部刷新小案例
Feb 08 Javascript
JS实现兼容性较好的随屏滚动效果
Nov 09 Javascript
详解AngularJS 模态对话框
Apr 07 Javascript
基于JS实现移动端访问PC端页面时跳转到对应的移动端网页
Dec 24 Javascript
Bootstrap table简单使用总结
Feb 15 Javascript
Vue使用mixins实现压缩图片代码
Mar 14 Javascript
vue+php实现的微博留言功能示例
Mar 16 Javascript
postman自定义函数实现 时间函数的思路详解
Apr 17 Javascript
Vue全局loading及错误提示的思路与实现
Aug 09 Javascript
Vue使用screenfull实现全屏效果
Sep 17 Javascript
Vue提供的三种调试方式你知道吗
Jan 18 Vue.js
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
MySQL的FIND_IN_SET函数使用方法分享
2012/03/27 PHP
Linux环境下搭建php开发环境的操作步骤
2013/06/17 PHP
javascript Prototype 对象扩展
2009/05/15 Javascript
让Firefox支持event对象实现代码
2009/11/07 Javascript
再说AutoComplete自动补全之实现原理
2011/11/05 Javascript
Jquery选择器中使用变量实现动态选择例子
2014/07/25 Javascript
JS实现控制表格行内容垂直对齐的方法
2015/03/30 Javascript
详解Angular的内置过滤器和自定义过滤器【推荐】
2016/12/26 Javascript
javascript实现一个网页加载进度loading
2017/01/04 Javascript
js处理包含中文的字符串实例
2017/10/11 Javascript
JavaScript实现数值自动增加动画
2017/12/28 Javascript
jQuery简单判断值是否存在于数组中的方法示例
2018/04/17 jQuery
微信小程序使用map组件实现检索(定位位置)周边的POI功能示例
2019/01/23 Javascript
详解小程序BackgroundAudioManager踩坑之旅
2019/12/08 Javascript
echarts 使用formatter 修改鼠标悬浮事件信息操作
2020/07/20 Javascript
electron踩坑之dialog中的callback解决
2020/10/06 Javascript
[51:39]DOTA2-DPC中国联赛 正赛 Magma vs LBZS BO3 第二场 2月7日
2021/03/11 DOTA
python网络爬虫之如何伪装逃过反爬虫程序的方法
2017/11/23 Python
Python实现求数列和的方法示例
2018/01/12 Python
Python数据分析库pandas基本操作方法
2018/04/08 Python
Python3实现统计单词表中每个字母出现频率的方法示例
2019/01/28 Python
python matplotlib库直方图绘制详解
2019/08/10 Python
复化梯形求积分实例——用Python进行数值计算
2019/11/20 Python
使用Python内置模块与函数进行不同进制的数的转换
2020/04/26 Python
python zip()函数的使用示例
2020/09/23 Python
Scrapy-Redis之RedisSpider与RedisCrawlSpider详解
2020/11/18 Python
python 实现图片修复(可用于去水印)
2020/11/19 Python
Rodd & Gunn澳大利亚官网:新西兰男装品牌
2018/09/25 全球购物
医学生求职自荐信
2013/10/25 职场文书
建材业务员岗位职责
2013/12/08 职场文书
光盘行动倡议书
2014/02/02 职场文书
大学生学雷锋活动总结
2014/06/26 职场文书
门面房租房协议书
2014/12/01 职场文书
离婚协议书范本
2015/01/26 职场文书
2016年高校自主招生自荐信范文
2015/03/24 职场文书
Windows Server 版本 20H2 于 8 月 9 日停止支持,Win10 版本 21H1 将于 12 月结束支
2022/07/23 数码科技