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 Tools tab使用介绍
Jul 14 Javascript
jquery监听div内容的变化具体实现思路
Nov 04 Javascript
jQuery支持动态参数将函数绑定到事件上的方法
Mar 17 Javascript
jQuery图片渐变特效的简单实现
Jun 25 Javascript
Javascript计算二维数组重复值示例代码
Dec 18 Javascript
Javascript 制作图形验证码实例详解
Dec 22 Javascript
Vue computed计算属性的使用方法
Jul 14 Javascript
浅谈Vue-cli 命令行工具分析
Nov 22 Javascript
vue3.0 CLI - 1 - npm 安装与初始化的入门教程
Sep 14 Javascript
Vue.js 中的 v-cloak 指令及使用详解
Nov 19 Javascript
Angular刷新当前页面的实现方法
Nov 21 Javascript
js实现简易计算器功能
Oct 18 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
COM in PHP (winows only)
2006/10/09 PHP
关于mysql字符集设置了character_set_client=binary 在gbk情况下会出现表描述是乱码的情况
2013/01/06 PHP
PHP实现模仿socket请求返回页面的方法
2014/11/04 PHP
PHP模板引擎Smarty内建函数foreach,foreachelse用法分析
2016/04/11 PHP
什么是JavaScript
2009/08/13 Javascript
Javascript表达式中连续的 &amp;&amp; 和 || 之赋值区别
2010/10/17 Javascript
js 连接数据库如何操作数据库中的数据
2012/11/23 Javascript
JS和jquery获取各种屏幕的宽度和高度的代码
2013/08/02 Javascript
js中一维数组和二位数组中的几个问题示例说明
2014/07/17 Javascript
JavaScript识别网页关键字并进行描红的方法
2015/11/09 Javascript
微信小程序 教程之列表渲染
2016/10/18 Javascript
jsTree事件和交互以及插件plugins详解
2017/08/29 Javascript
浅谈vue中关于checkbox数据绑定v-model指令的个人理解
2018/11/14 Javascript
8个非常实用的Vue自定义指令
2020/12/15 Vue.js
Python中的上下文管理器和with语句的使用
2018/04/17 Python
django 修改server端口号的方法
2018/05/14 Python
pytorch 调整某一维度数据顺序的方法
2018/12/08 Python
详解Python计算机视觉 图像扭曲(仿射扭曲)
2019/03/27 Python
python 缺失值处理的方法(Imputation)
2019/07/02 Python
在Pycharm中调试Django项目程序的操作方法
2019/07/17 Python
Python爬虫 scrapy框架爬取某招聘网存入mongodb解析
2019/07/31 Python
Windows上安装tensorflow  详细教程(图文详解)
2020/02/04 Python
Python Flask上下文管理机制实例解析
2020/03/16 Python
keras中的backend.clip用法
2020/05/22 Python
使用Keras预训练好的模型进行目标类别预测详解
2020/06/27 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
2021/03/04 Python
详解移动端HTML5音频与视频问题及解决方案
2018/08/22 HTML / CSS
html5中 media(播放器)的api使用指南
2014/12/26 HTML / CSS
台湾百利市购物中心:e-Payless
2017/08/16 全球购物
春节联欢会主持词
2014/03/24 职场文书
酒店管理求职信
2014/06/09 职场文书
美容院管理规章制度
2015/08/05 职场文书
2016秋季田径运动会广播稿
2015/12/21 职场文书
mysql多表查询-笔记七
2021/04/05 MySQL
Linux系统下安装PHP7.3版本
2021/06/26 PHP
详解JavaScript的计时器和按钮效果设置
2022/02/18 Javascript