最近在研究设计grid的时候,再再一次地遇到这个小问题。
----很多自己开发和编写过grid的时候会考虑自己渲染横向和纵向的scroller,然后给其绑定事件,这个就会遇到一个兼容性api的差异
1. mousewheel与DOMMouseScroll
这个应该有点经验的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); }
其实从代码的角度我们大致可以看到:
- 有detail和wheelDelta的区别
- 还有单位制3还是120
- 为什么event.detail前面还有-(负号)
- 正负代表向前向后?
下面详细说一下:
1.mousewheel事件有event.wheelDelta
----------如果返回的是正的值就说明向上(前)滚动了,反之如果负值就向下(后)。
---------返回的值多是120的倍数,所以 返回的值/120
2.DeltaDOMMouseScroll事件有event.detail
----------如果是负值说明向上(前)滚动了,反之如果是正值就向下(后)。 -------(这点和上面相反)
---------返回的值多是3的倍数,所以 返回值/3
相关推荐
然而,Firefox 3.5 及以后的版本并不支持 "mousewheel",而是使用了 "DOMMouseScroll" 事件作为替代。因此,为了确保跨浏览器的兼容性,开发者需要同时处理这两个事件。 在处理 Mousewheel 事件时,有两个关键的...
在`setup`方法中,`types`数组包含了两种可能的滚动事件名称,即`DOMMouseScroll`(Firefox)和`mousewheel`(其他浏览器)。对于支持`addEventListener`的现代浏览器,代码遍历`types`数组并为每个事件添加事件监听...
- 与`mousewheel`事件不同的是,`DOMMouseScroll`事件中,滚轮信息存储在`detail`属性里。向上滚动时,`detail`属性的值是-3的倍数;向下滚动时,值为3的倍数。 - 注意,Firefox的方向判断与其它浏览器相反,其向...
滚轮事件是不同浏览器会有一点点区别,一个像Firefox使用DOMMouseScroll ,ff也可以使用addEventListener方法绑定DomMouseScroll事件,其他的浏览器滚轮事件使用mousewheel,下面我来给大家具体介绍。 Firefox使用...
【标题】"MouseWheel:零依赖可笑的快速鼠标滚轮处理程序"涉及的核心知识点是JavaScript中的事件处理和用户交互,特别是与鼠标滚轮相关的事件监听和处理。在这个项目中,开发者提供了一个轻量级的解决方案,用于在...
1. **事件监听**:首先,插件会绑定鼠标移动(mousemove)和鼠标滚轮(mousewheel或DOMMouseScroll,取决于浏览器支持)事件到图片元素上。当用户移动鼠标时,这些事件会被触发。 2. **坐标计算**:当mousemove事件...
firefox是按标准实现的,事件名为”DOMMouseScroll “,IE下采用的则是”mousewheel “。当然一行代码就解决了兼容问题 代码如下:var mousewheel = document.all?”mousewheel”:”DOMMouseScroll”; 事件属性,IE是...
在提供的文件名`jquery-mousewheel-3.0.6`中,我们看到这是一个jQuery Mousewheel插件的版本号。这个插件扩展了jQuery,提供了更精确的滚轮事件处理,特别是对于那些需要精细控制滚轮滚动情况的应用。它增加了对不同...
例如,Firefox使用`DOMMouseScroll`事件,而Chrome和Safari使用`mousewheel`事件。此外,滚动的方向和步长也可能因浏览器而异。为了解决这些兼容性问题,开发者创建了jQuery MouseWheel插件,它提供了一个统一的接口...
本文实例为大家分享了vue实现...使用mousewheel , DOMMouseScroll(火狐用)监听鼠标滚动事件,当鼠标上下的滚动的时候,当前的页面transformY(屏高)或者transformX(屏宽) 代码实现 HTML <div class=fullPa
我们用`on('mousewheel DOMMouseScroll'`监听滚轮事件,`event.originalEvent.wheelDelta`是旧版浏览器的滚轮事件值,`-event.originalEvent.detail`是新版浏览器的值。根据滚轮向上或向下的判断,改变div的`...
但是火狐却偏偏不支持MouseWheel,而使用无厘头的DOMMouseScroll,这玩意儿除了火狐以外其它浏览器都不兼容。也就是说,对于鼠标滚轮事件的处理,火狐只能使用DOMMouseScroll。而非火狐则只能使用MouseWheel。这两种...
与"mousewheel"事件相反,`event.detail`的负值表示滚轮向上,正值表示向下。其值以3为单位,所以`event.detail / 3`可以得到滚动的幅度。 值得注意的是,Opera 10+ 版本的浏览器比较特殊,它同时支持"mousewheel...
要监听滚轮事件,可以使用`$(element).on('mousewheel', callbackFunction)`或者`$(element).on('DOMMouseScroll', callbackFunction)`。这是因为不同浏览器对滚轮事件的支持不同,`mousewheel`是大部分浏览器支持的...
1. **事件标准化**:在现代浏览器中,推荐使用标准化的`wheel`事件替代`mousewheel`和`DOMMouseScroll`,以提高跨浏览器的兼容性和代码简洁性。 2. **性能优化**:频繁地触发滚轮事件可能导致性能问题,可以考虑使用...
火狐浏览器使用`DOMMouseScroll`事件而不是`mousewheel`,所以我们需要合并这两个事件: ```javascript $(document).ready(function() { // ... 之前的代码 ... var isFirefox = typeof InstallTrigger !== '...