`
zhangyaochun
  • 浏览: 2608819 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

mousewheel与DOMMouseScroll

阅读更多

最近在研究设计grid的时候,再再一次地遇到这个小问题。

----很多自己开发和编写过grid的时候会考虑自己渲染横向和纵向的scroller,然后给其绑定事件,这个就会遇到一个兼容性api的差异

 

1. mousewheelDOMMouseScroll

 

这个应该有点经验的fe会知道这个api的差异。当然可能经验多一点点的人会看到以前的部分js的lib库在判断ff浏览器的时候用document.getBoxObjectFor这个特性去做(http://zhangyaochun.iteye.com/blog/1187180)这里附上昨天的记录。其实记录的本意是想告诫自己和所有同学虽然部分特性可能在你的browser.js的库里面很有效(代码量很完美),但是一旦浏览器版本升级,这样的特性是否还存在?所有还是建议规规矩矩的(navigator.userAgent

 

2.上代码

 

 

//主要的是区分ff和其他浏览器去绑定事件
//思想来源于tangram和prototype

/*
*isGecko -- judge the browser is Gecko*
*@function*
*@return {Boolean}*
*you can also like prototype.js*
navigator.userAgent.indexOf('Gecko')>-1 && navigator.userAgent.indexOf('KHTML') == -1
*/
ZYC.browser.isGecko = /gecko/i.test(navigator.userAgent) && !/like gecko/i.test(navigator.userAgent);

 

 

//有了兼容性判断后下面就是对应绑定事件了
//1.自己定义一个wheel事件
function wheel(event){
         //先暂时不放出来
}

if(!ZYC.browser.isGecko){
   //绑mousewheel
}else{
  //ff去绑DOMMouseScroll
}

 

 

3、 到目前位置还没用完全完成,虽然我们多知道,而且能判断当前浏览器,然后绑定事件了,那问题就来了

 

  • 第一:我鼠标滚轴向前向后咋区分
  • 第二:里面是不是还有兼容性的问题
我先放出上面wheel事件里面的代码吧
 
//出现的event的属性后面会详细说明
function wheel(event){
      //获得滚轴的向前向后
    var num = event.detail? (- event.detail /3) : (event.wheelDelta /120);

}
 

其实从代码的角度我们大致可以看到:

 

 

  • detailwheelDelta的区别
  • 还有单位制3还是120
  • 为什么event.detail前面还有-(负号)
  • 正负代表向前向后
下面详细说一下:
 
1.mousewheel事件有event.wheelDelta
   ----------如果返回的是正的值就说明向上(前)滚动了,反之如果负值就向下(后)。
   ---------返回的值多是120的倍数,所以 返回的值/120
 
2.DeltaDOMMouseScroll事件有event.detail
   ----------如果是负值说明向上(前)滚动了,反之如果是正值就向下(后)。 -------(这点和上面相反)
   ---------返回的值多是3的倍数,所以  返回值/3

 

1
0
分享到:
评论

相关推荐

    浅谈 Mousewheel 事件

    然而,Firefox 3.5 及以后的版本并不支持 "mousewheel",而是使用了 "DOMMouseScroll" 事件作为替代。因此,为了确保跨浏览器的兼容性,开发者需要同时处理这两个事件。 在处理 Mousewheel 事件时,有两个关键的...

    Jquery增加鼠标中间功能mousewheel的实例代码

    在`setup`方法中,`types`数组包含了两种可能的滚动事件名称,即`DOMMouseScroll`(Firefox)和`mousewheel`(其他浏览器)。对于支持`addEventListener`的现代浏览器,代码遍历`types`数组并为每个事件添加事件监听...

    js中的鼠标滚轮事件1

    - 与`mousewheel`事件不同的是,`DOMMouseScroll`事件中,滚轮信息存储在`detail`属性里。向上滚动时,`detail`属性的值是-3的倍数;向下滚动时,值为3的倍数。 - 注意,Firefox的方向判断与其它浏览器相反,其向...

    html中鼠标滚轮事件onmousewheel的处理方法

    滚轮事件是不同浏览器会有一点点区别,一个像Firefox使用DOMMouseScroll ,ff也可以使用addEventListener方法绑定DomMouseScroll事件,其他的浏览器滚轮事件使用mousewheel,下面我来给大家具体介绍。 Firefox使用...

    MouseWheel:零依赖可笑的快速鼠标滚轮处理程序

    【标题】"MouseWheel:零依赖可笑的快速鼠标滚轮处理程序"涉及的核心知识点是JavaScript中的事件处理和用户交互,特别是与鼠标滚轮相关的事件监听和处理。在这个项目中,开发者提供了一个轻量级的解决方案,用于在...

    jquery拖动图片查看.zip

    1. **事件监听**:首先,插件会绑定鼠标移动(mousemove)和鼠标滚轮(mousewheel或DOMMouseScroll,取决于浏览器支持)事件到图片元素上。当用户移动鼠标时,这些事件会被触发。 2. **坐标计算**:当mousemove事件...

    javascript 兼容鼠标滚轮事件

    firefox是按标准实现的,事件名为”DOMMouseScroll “,IE下采用的则是”mousewheel “。当然一行代码就解决了兼容问题 代码如下:var mousewheel = document.all?”mousewheel”:”DOMMouseScroll”; 事件属性,IE是...

    JQ鼠标滚轮事件

    在提供的文件名`jquery-mousewheel-3.0.6`中,我们看到这是一个jQuery Mousewheel插件的版本号。这个插件扩展了jQuery,提供了更精确的滚轮事件处理,特别是对于那些需要精细控制滚轮滚动情况的应用。它增加了对不同...

    一个jQuery插件添加跨浏览器鼠标滚轮支持

    例如,Firefox使用`DOMMouseScroll`事件,而Chrome和Safari使用`mousewheel`事件。此外,滚动的方向和步长也可能因浏览器而异。为了解决这些兼容性问题,开发者创建了jQuery MouseWheel插件,它提供了一个统一的接口...

    vue实现全屏滚动效果(非fullpage.js)

    本文实例为大家分享了vue实现...使用mousewheel , DOMMouseScroll(火狐用)监听鼠标滚动事件,当鼠标上下的滚动的时候,当前的页面transformY(屏高)或者transformX(屏宽) 代码实现 HTML <div class=fullPa

    jQuery实现鼠标滚轮控制div上下翻动效果.rar_BH1_div 滚轮 翻页_html_jquery_设置滚轮翻页

    我们用`on('mousewheel DOMMouseScroll'`监听滚轮事件,`event.originalEvent.wheelDelta`是旧版浏览器的滚轮事件值,`-event.originalEvent.detail`是新版浏览器的值。根据滚轮向上或向下的判断,改变div的`...

    javascript实现禁止鼠标滚轮事件

    但是火狐却偏偏不支持MouseWheel,而使用无厘头的DOMMouseScroll,这玩意儿除了火狐以外其它浏览器都不兼容。也就是说,对于鼠标滚轮事件的处理,火狐只能使用DOMMouseScroll。而非火狐则只能使用MouseWheel。这两种...

    JS滚轮事件onmousewheel使用介绍

    与"mousewheel"事件相反,`event.detail`的负值表示滚轮向上,正值表示向下。其值以3为单位,所以`event.detail / 3`可以得到滚动的幅度。 值得注意的是,Opera 10+ 版本的浏览器比较特殊,它同时支持"mousewheel...

    jquery监听鼠标滚轮事件+js监听滚轮事件

    要监听滚轮事件,可以使用`$(element).on('mousewheel', callbackFunction)`或者`$(element).on('DOMMouseScroll', callbackFunction)`。这是因为不同浏览器对滚轮事件的支持不同,`mousewheel`是大部分浏览器支持的...

    IE和Firefox的鼠标滚轮事件JavaScript代码

    1. **事件标准化**:在现代浏览器中,推荐使用标准化的`wheel`事件替代`mousewheel`和`DOMMouseScroll`,以提高跨浏览器的兼容性和代码简洁性。 2. **性能优化**:频繁地触发滚轮事件可能导致性能问题,可以考虑使用...

    基于jquery的滚动鼠标放大缩小图片效果 兼容火狐.zip

    火狐浏览器使用`DOMMouseScroll`事件而不是`mousewheel`,所以我们需要合并这两个事件: ```javascript $(document).ready(function() { // ... 之前的代码 ... var isFirefox = typeof InstallTrigger !== '...

Global site tag (gtag.js) - Google Analytics