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;
    }
    };
  • 相关阅读:
    Roce ofed 环境搭建与测试
    Ubuntu 1804 搭建NFS服务器
    Redhat 8.0.0 安装与网络配置
    Centos 8.1 安装与网络配置
    SUSE 15.1 系统安装
    VSpare ESXi 7.0 基本使用(模板、iso、SRIOV)
    VSpare ESXi 7.0 服务器安装
    open SUSE leap 15.1 安装图解
    KVM虚拟机网卡连接网桥
    GitHub Action一键部署配置,值得拥有
  • 原文地址:https://www.cnblogs.com/bluefantasy728/p/5586722.html
Copyright © 2011-2022 走看看