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;
    }
    };
  • 相关阅读:
    Opengl绘制我们的小屋(二)第一人称漫游
    C# this.Invoke和this.BeginInvoke 最简单的写法
    C# 递归模型定义。赋值
    .net Core 2.1 后 Session保存,新页面获取不到值
    .net core mvc 错误信息显示 ModelState.AddModelError
    .net Core 依赖注入 Add********说明
    C# 中2个问号的作用。C#的??代表是什么意思
    asp.net mvc 加三层架构 完美搭配
    C# DataTable.Compute()用法
    C# DateTime判断时间
  • 原文地址:https://www.cnblogs.com/bluefantasy728/p/5586722.html
Copyright © 2011-2022 走看看