IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

js中鼠标滚轮事件详解

前端技术 2010-02-25 09:31:18 累计浏览 3,463 次
本机暂存
之前js 仿Photoshop鼠标滚轮控制输入框取值中已使用js对鼠标滚轮事件进行控制,滚轮事件其中考虑浏览器兼容性问题

附加事件

其中经我测试,IE/Opera属于同一类型,使用attachEvent即可添加滚轮事件。

以下是代码片段:
   /*IE注册事件*/
   if(document.attachEvent){
   document.attachEvent(’onmousewheel’,scrollFunc);
   }


Firefox使用addEventListener添加滚轮事

以下是代码片段:
   /*Firefox注册事件*/
   if(document.addEventListener){
       document.addEventListener(’DOMMouseScroll’,scrollFunc,false);
   }


Safari与Chrome属于同一类型,可使用HTML DOM方式添加事件

以下是代码片段:
   window.onmousewheel=document.onmousewheel=scrollFunc;//IE/Opera/Chrome


其中除Firefox外其余均可使用HTML DOM方式添加事件,因此添加事件使用以下方式

以下是代码片段:
   /*注册事件*/
   if(document.addEventListener){
       document.addEventListener(’DOMMouseScroll’,scrollFunc,false);
   }//W3C
   window.onmousewheel=document.onmousewheel=scrollFunc;//IE/Opera/Chrome


detail与wheelDelta

判断滚轮向上或向下在浏览器中也要考虑兼容性,现在五大浏览器(IE、Opera、Safari、Firefox、Chrome)中Firefox 使用detail,其余四类使用wheelDelta;两者只在取值上不一致,代表含义一致,detail与wheelDelta只各取两个值,detail只取±3,wheelDelta只取±120,其中正数表示为向上,负数表示向下。

以下是代码片段:
   <p><label for="wheelDelta"> 滚动值:</label>(IE/Opera)<input type="text" id="wheelDelta" /></p>
   <p><label for="detail"> 滚动值:(Firefox)</label><input type="text" id="detail" /></p>
   <script type="text/javascript">
   var oTxt=document.getElementById("txt");
   /***********************
   * 函数:判断滚轮滚动方向
   * 作者:walkingp
   * 参数:event
   * 返回:滚轮方向 1:向上 -1:向下
   *************************/
   var scrollFunc=function(e){
       var direct=0;
       e=e || window.event;

       var t1=document.getElementById("wheelDelta");
       var t2=document.getElementById("detail");
       if(e.wheelDelta){//IE/Opera/Chrome
           t1.value=e.wheelDelta;
       }else if(e.detail){//Firefox
           t2.value=e.detail;
       }
       ScrollText(direct);
   }
   /*注册事件*/
   if(document.addEventListener){
       document.addEventListener(’DOMMouseScroll’,scrollFunc,false);
   }//W3C
   window.onmousewheel=document.onmousewheel=scrollFunc;//IE/Opera/Chrome/Safari
   </script>


预览效果http://www.51obj.cn/demo/js/wheelDelta_detail.html

(部分图片见原文:http://www.51obj.cn/?p=637
(以上内容部分内容参考了http://adomas.org/javascript-mouse-wheel/ 

同分类推荐文章

  1. translateZ() (2026-06-25 21:18:56)
  2. translateY() (2026-06-25 21:17:56)
  3. translateX() (2026-06-25 21:16:01)

查看更多 前端 文章 →

建议继续学习

  1. JQuery实现Excel表格呈现 (累计阅读 48,349)
  2. 深入理解Javascript之执行上下文(Execution Context) (累计阅读 18,404)
  3. 从输入 URL 到页面加载完成的过程中都发生了什么事情? (累计阅读 15,933)
  4. 图片动态局部毛玻璃模糊效果的实现 (累计阅读 14,848)
  5. 天朝第二代身份证号码的验证机制 (累计阅读 14,762)
  6. HTML 5 的data-* 自定义属性 (累计阅读 14,349)
  7. 分享一个JQUERY颜色选择插件 (累计阅读 14,223)
  8. 什么是全栈工程师? (累计阅读 14,038)
  9. 快速排序(Quicksort)的Javascript实现 (累计阅读 11,735)
  10. 7 天打造前端性能监控系统 (累计阅读 11,187)