zoukankan      html  css  js  c++  java
  • 【学】鼠标滚轮事件兼容写法

    鼠标滚轮的写法要注意以下几个知识点:

    • ie,chrome下有onmousewheel事件,而ff是DOMMouseScroll事件,而且只能通过addEventListener来添加,而同时为了兼顾ie9下面所以在事件添加的时候就要做判断
    • 为了判断是向上还是向下滚动,ie和chrome下是通过event事件对象的wheelDelta属性来判断,而ff下是event的detail值判断,但由于向上和向下滚动对应的正负关系,wheelDeltadetail正好是相反的,那可以直接通过正负值来判断滚动的方向
    • 鼠标滚动的时候会触发浏览器的默认事件,就是滚动可视区,为了阻止默认事件,ie和chrome可以用return false来阻止,但是ff下因为是通过addEventListener添加的事件,只能用event对象下的preventDefault()方法来阻止,同时也要做好兼容判断
    window.onload=function(){
    var oDiv = document.getElementById('cover');
    oDiv.onmousewheel = fn; //这个无论ie什么版本都支持,chrome也支持,但是ff不支持
    if(oDiv.addEventListener){ //为了支持ie9一下的版本,所以不能单独直接写addEventListener,要判断一下再用,即使是在标准的浏览器下,给它绑定一个不存在的事件也是不会有什么问题的
    oDiv.addEventListener('DOMMouseScroll',fn,false); //这个是ff专有的鼠标滚轮事件,而且只能通过addEventListener来加
    }
     
    function fn(ev){
    var ev = ev||event;
    var b = true;
    if(ev.wheelDelta){ //通过这个判断就可以统一三种浏览器下对滚轮往上还是往下滚
    b = ev.wheelDelta>0? true:false; //chrome和ie下
    }else{
    b = ev.detail<0? true:false; //ff下
    }
     
    if(b){
    alert('上');
    }else{
    alert('下');
    }
    //以下这段是为了防止按滚轮时执行浏览器的默认事件,不让可视窗口往下滚动
    if(ev.preventDefault){ //因为ff下是通过addEventListener添加的,不支持return false这样的阻止默认事件,而需要用到event对象下的preventDefault()方法。
    ev.preventDefault();
    }
    return false;
    }
    };
  • 相关阅读:
    Linux学习总结(16)——CentOS 下 Nginx + Tomcat 配置负载均衡
    photo的复数是photos
    APUE1.11:系统调用 库函数
    Linux的man手册共有以下几个章节
    [关于宝宝的一些网上摘抄]
    ZT-Android深入浅出之Binder机 制
    jclass和jobject的迷惑
    ZT JAVA WeakReference
    ZT————pull push mode
    看了xici有写给孩子的信,maybe我也要写给孩子一些东西了
  • 原文地址:https://www.cnblogs.com/bluefantasy728/p/5586722.html
Copyright © 2011-2022 走看看