• 【学】鼠标滚轮事件兼容写法


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

    • 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 7 web服务基础知识
    Linux 6 Nginx
    Linux 5 MySQL、redis相关
    Linux 4 安装相关程序
    phpcms 路由配置
    ecmall 入口文件解析 引入了什么
    php 调用天气接口
    phpcms 加载微信类库,生成签名
    ecmall 学习记录2
    Jquery 遍历
  • 原文地址:https://www.cnblogs.com/bluefantasy728/p/5586722.html
Copyright © 2020-2023  润新知