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的开源工具PACKER2.0.2
Nov 04 Javascript
js 多种变量定义(对象直接量,数组直接量和函数直接量)
May 24 Javascript
js实现在文本框光标处添加字符的方法介绍
Nov 24 Javascript
js获取url传值的方法
Dec 18 Javascript
JS/jQuery判断DOM节点是否存在的简单方法
Nov 24 Javascript
原生JS简单实现ajax的方法示例
Nov 29 Javascript
JS实现随机颜色的3种方法与颜色格式的转化
Jan 05 Javascript
Angular4如何自定义首屏的加载动画详解
Jul 26 Javascript
jQuery实现为动态添加的元素绑定事件实例分析
Sep 07 jQuery
vue项目打包后上传至GitHub并实现github-pages的预览
May 06 Javascript
微信小程序实现手势滑动卡片效果
Aug 26 Javascript
React中Ref 的使用方法详解
Apr 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目录操作函数之获取目录与文件的类型
2010/12/29 PHP
php获取$_POST同名参数数组的实现介绍
2013/06/30 PHP
非常重要的php正则表达式详解
2016/01/04 PHP
PHP简单检测网址是否能够正常打开的方法
2016/09/04 PHP
jQuery 1.5.1 发布,全面支持IE9 修复大量bug
2011/02/26 Javascript
jquery实现按Enter键触发事件示例
2013/09/10 Javascript
关于页面嵌入swf覆盖div层的问题的解决方法
2014/02/11 Javascript
javascript删除数组元素并且数组长度减小的简单实例
2014/02/14 Javascript
JavaScript通过正则表达式实现表单验证电话号码
2014/03/07 Javascript
jquery实现文本框textarea自适应高度
2016/03/09 Javascript
JS上传组件FileUpload自定义模板的使用方法
2016/05/10 Javascript
用JavaScript动态建立或增加CSS样式表的实现方法
2016/05/20 Javascript
跨域请求的完美解决方法(JSONP, CORS)
2016/06/12 Javascript
JavaScript面向对象分层思维全面解析
2016/11/22 Javascript
JavaScript中定义对象原型的两种使用方法
2016/12/15 Javascript
vue axios同步请求解决方案
2017/09/29 Javascript
使用classList来实现两个按钮样式的切换方法
2018/01/24 Javascript
JS异步宏队列与微队列原理区别详解
2020/07/02 Javascript
下载给定网页上图片的方法
2014/02/18 Python
Python使用新浪微博API发送微博的例子
2014/04/10 Python
python获取文件路径、文件名、后缀名的实例
2018/04/23 Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
2018/07/26 Python
python队列Queue的详解
2019/05/10 Python
python3反转字符串的3种方法(小结)
2019/11/07 Python
python、PyTorch图像读取与numpy转换实例
2020/01/13 Python
对Tensorflow中Device实例的生成和管理详解
2020/02/04 Python
python实现串口通信的示例代码
2020/02/10 Python
CSS实现进度条和订单进度条的示例
2020/11/05 HTML / CSS
印度尼西亚最好的小工具在线商店:Erafone.com
2019/03/26 全球购物
仓库管理专业个人自我评价范文
2013/11/11 职场文书
商场经理竞聘演讲稿
2014/01/01 职场文书
会计辞职信范文
2014/01/15 职场文书
阳光体育活动总结
2014/04/30 职场文书
高一学年自我鉴定范文(3篇)
2014/09/26 职场文书
2014年领导班子专项整治整改方案
2014/09/28 职场文书
《迟到》教学反思
2016/02/24 职场文书