JS事件-鼠标滚轮事件

之前学习了onmouseover,onmousedown等鼠标事件,今天来看看鼠标的滚轮事件,浏览器兼容一直是让人比较恶心的事情,今天就让我们将恶心进行到底,看看这个恶心的鼠标滚轮事件!

鼠标滚轮事件在IE和谷歌浏览器Chrome下是通过onmousewheel这个事件实现的,但是火狐FF下却不识别onmousewheel,在FF下需要用DOMMouseScroll,并且必须用“事件监听”方式添加事件才有效

而大家都知道“事件监听”方式绑定事件:

IE下是通过attachEvent实现事件监听

而Chrome和FF下通过addEventListener  来实现事件监听

这个场面是够恶心了:

事件监听                  滚轮事件

谷歌   addEventListener         onmousewheel

IE    
  attachEvent                 onmousewheel

FF     addEventListener         DOMMouseScroll

为了浏览器兼容,我们自己封装一个“绑定事件的函数”

function addEvent(obj,xEvent,fn) {
    if(obj.attachEvent){
      obj.attachEvent('on'+xEvent,fn);
    }else{
      obj.addEventListener(xEvent,fn,false);
    }
}
window.onload = function () {
  //接着利用我们自己封装的函数给div绑定事件,
  var oDiv = document.getElementById('div1');
  addEvent(oDiv,'mousewheel',onMouseWheel);
  addEvent(oDiv,'DOMMouseScroll',onMouseWheel);
  // 当滚轮事件发生时,执行onMouseWheel这个函数
  function onMouseWheel() {
    alert('haha');
  }
} 

有时候当鼠标滚轮滚动的时候我们需要知道滚轮是向上滚的还是向下滚的。

在IE和Chrome下通过event.wheelDelta的返回值可以知道滚轮是向上滚的还是向下滚的

当返回值为正值的时候,说明是向上滚

当返回值是负值的时候,说明是向下滚

但是event.wheelDelta在火狐下并不起作用,在火狐下需要通过event.detail来知道滚轮是向上滚的还是向下滚,火狐下还有一点不同:

当返回值为正值的时候,说明是向下滚

当返回值是负值的时候,说明是向上滚

接下来,实现当滚轮向下滚动时div的高度增大,向上滚时div高度减小

1. 需要定义一个标志位,标志滚轮是向上滚还是向下滚

2. 需要做浏览器兼容

3. 还要阻止浏览器默认行为

window.onload = function () {
        var oDiv = document.getElementById('div1');

        function onMouseWheel(ev) {/*当鼠标滚轮事件发生时,执行一些操作*/
            var ev = ev || window.event;
            var down = true; // 定义一个标志,当滚轮向下滚时,执行一些操作
                down = ev.wheelDelta?ev.wheelDelta<0:ev.detail>0;
            if(down){
                oDiv.style.height = oDiv.offsetHeight+10+'px';
            }else{
                oDiv.style.height = oDiv.offsetHeight-10+'px';
            }
            if(ev.preventDefault){/*FF 和 Chrome*/
                ev.preventDefault();// 阻止默认事件
            }
            return false;
        }
        addEvent(oDiv,'mousewheel',onMouseWheel);
        addEvent(oDiv,'DOMMouseScroll',onMouseWheel);
     }
    function addEvent(obj,xEvent,fn) {
        if(obj.attachEvent){
            obj.attachEvent('on'+xEvent,fn);
        }else{
            obj.addEventListener(xEvent,fn,false);
        }
    }
时间: 2024-10-10 22:23:04

JS事件-鼠标滚轮事件的相关文章

js中鼠标滚轮事件详解

(以下内容部分内容参考了http://adomas.org/javascript-mouse-wheel/ ) 之前js 仿Photoshop鼠标滚轮控制输入框取值中已使用js对鼠标滚轮事件进行控制,滚轮事件其中考虑浏览器兼容性问题 附加事件 其中经我测试,IE/Opera属于同一类型,使用attachEvent即可添加滚轮事件. /*IE注册事件*/ if(document.attachEvent){ document.attachEvent('onmousewheel',scrollFunc

使用JS实现鼠标滚轮事件

网站需要实现鼠标滚轮滚一下,页面向下滑向下一个锚点,由于前面有个一样式必须用jQuery1.3.2,而好多滚轮事件都使用了更高版本的jQuery,于是就从网上找了找 <script type="text/javascript"> var sel_index = -1 var sel_max = $(".billboard-hero").length - 1; function handle(delta) { var s = delta + ":

JS鼠标滚轮事件解析

一.不同浏览器的鼠标滚轮事件 首先,不同的浏览器有不同的滚轮事件.主要是有两种,onmousewheel(IE/Opera/Chrome支持,firefox不支持)和DOMMouseScroll(只有firefox支持) 另外在操作的过程中需要添加事件监听,兼容性写法 代码如下: /*注册事件*/ if(document.addEventListener){ document.addEventListener('DOMMouseScroll',scrollFunc,false); // W3C

js整频滚动展示效果(函数节流鼠标滚轮事件)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"><head> <meta http-equiv="Content-T

JS鼠标滚轮事件详解

鼠标滚轮事件 //兼容性写法,该函数也是网上别人写的,不过找不到出处了,蛮好的,所有我也没有必要修改了 //判断鼠标滚轮滚动方向 if (window.addEventListener)//FF,火狐浏览器会识别该方法 window.addEventListener('DOMMouseScroll', wheel, false); window.onmousewheel = document.onmousewheel = wheel;//W3C //统一处理滚轮滚动事件 function whe

js中的鼠标滚轮事件

## 事件对象 event 1 event事件对象,表示用来获取事件的详细信息,比如得到鼠标的横坐标:事件对象.clientX(clientX是可视区坐标) window.onclick = function(ev){ var oEvent = ev || event;//event为IE8和IE8以下浏览器浏览器事件对象可以直接使用: //以上代码可以判断是否传递了事件对象参数,如果传递了则使用传递的事件对象ev,否则使用window.event alert(oEvent.type);//cl

浅谈鼠标滚轮事件

现在的网页设计越来越高大上,效果越来越炫酷毙.一些浏览器的默认东西都被纷纷嫌弃,取而代之的是各种酷炫拽的模拟组件.就好像之前说过的视差滚动,又好像各种小清新的模拟滚动条,都有共同的事件:滚轮事件. 正如大家所知道的那样,jquery框架默认是不支持鼠标中轮滚轮事件的.要实现不同浏览器之间的滚轮事件,我们不能不说一下这个js组件了:jquery.mousewheel.js. 什么都不说,先上源码: /*! Copyright (c) 2013 Brandon Aaron (http://brand

鼠标滚轮事件

由于浏览器的不同,对鼠标滚轮事件也有所不同,大致可分为DOMMouseScroll 和onmousewheel两类 1.第一类是Firefox支持的DOMMouseScroll事件,此事件必须以addEventListener来绑定,当鼠标滚轮上下滚动时 ev.detail向上为-3,向下为3. 2.第二类是IE/chrome支持的onmousewheel事件,当鼠标滚轮上下滚动时 ev.wheelDelta向上为120,向下为-120.

鼠标滚轮事件的监听

鼠标滚轮事件的监听原理:判断鼠标滚轮的滚动获取一个值,根据这个值判断滚动的方向.分析:首先,判断滚轮方向.Firefox:detail,取值为-/+3(负值向上,正值向下):其他:wheelDelta,取值为+/-120(正值向上,负值向下).兼容所有浏览器的的封装: ? 1 2 3 4 5 6 7 8 9 10 function scrollEvent(ev){     ev = ev || window.event;     var data = '';     if(ev.wheelDel