`
sty2008boy
  • 浏览: 299682 次
  • 性别: Icon_minigender_1
  • 来自: 太原
社区版块
存档分类
最新评论

[JS] - onmusewheel事件(兼容IE,FF)

阅读更多
相信用户在浏览Google Map 时,都注意到向上或向下滚动鼠标可以使地图放大或缩小。其实,对于鼠标滚动我们并不陌生。但要给一个元素绑定鼠标滚动事件,我们有必要对该事件有一个详尽的了解。

浏览器对该事件支持情况如何?IE6, Opera9+, Safari2+以及Firefox1+均支持“onmousewheel”事件,在FF 3.x中,与之相当的是“DOMMouseScroll”事件。“onmousewheel”作为事件名,不为其识别。所以,为了保证能在每个浏览器中都能运行,就需要针对不同的浏览器来绑定不同的事件。



  var mousewheelevt=(/Firefox/i.test(navigator.userAgent))? "DOMMouseScroll" : "mousewheel" //FF doesn't recognize mousewheel as of FF3.xif (document.attachEvent) //if IE (and Opera depending on user setting)    document.attachEvent("on"+mousewheelevt, function(e){alert('Mouse wheel movement detected!')})else if (document.addEventListener) //WC3 browsers    document.addEventListener(mousewheelevt, function(e){alert('Mouse wheel movement detected!')}, false)






上面的代码给document绑定了mousewheel事件,并能在所有浏览器中运行。但是,鼠标每向上或向下移动一次,滚动了多少?当该事件触发时,在non-FF浏览器中,记录其距离的是“wheelDelta”,它返回的总是120的倍数(120表明mouse向上滚动,-120表明鼠标向下滚动)。在FF中,记录其滚动距离的是“detail”属性,它返回的是3的倍数(3表明mouse向下滚动,-3表明mouse向上滚动)。

需要注意的是,Opera 响应“onmousewheel”事件时,它同时拥有“wheelDelta”和“detail”属性。其“detail”属性返回的值与FF中相同。因此,对Opera 应该用“detail”属性来mouse滚动的距离。在触发滚动事件时,我希望得到整数1或-1。通过上面的分析,我们可以很轻松的得到我们想要的值,对于“wheelDelta”,只需要除以120,对于“detail”,将其除以3即可。



function displayDelta(e){    var evt = window.event || e;    var delta = evt.detail ? -evt.detail / 3 : evt.wheelDelta / 120;    return delta ;}






有了上面的分析,我们可以构建自己的函数为一个对象绑定mousewheel事件。即:



function wheel(obj, fn ,useCapture){    var mousewheelevt=(/Firefox/i.test(navigator.userAgent))? "DOMMouseScroll" : "mousewheel" //FF doesn't recognize mousewheel as of FF3.x    if (obj.attachEvent) //if IE (and Opera depending on user setting)        obj.attachEvent("on"+mousewheelevt, handler, useCapture);    else if (obj.addEventListener) //WC3 browsers        obj.addEventListener(mousewheelevt, handler, useCapture);     function handler(event) {        var delta = 0;        var event = window.event || event ;        var delta =  event.detail ?  -event.detail/3 : event.wheelDelta/120;        if (event.preventDefault)                    event.preventDefault();        event.returnValue = false;        return fn.apply(obj, [event, delta]);    }}

附:Jquery.mousewheel,winform 实例
分享到:
评论

相关推荐

    JavaScript 瀑布流 吸顶 兼容IE FF Chrome

    对于兼容性问题,JavaScript通常配合CSS3使用,因为CSS3提供了许多强大的布局功能,如Flexbox和Grid,但在老版本的IE浏览器(特别是IE8及以下)中,这些新特性可能不被支持。为了实现对这些浏览器的兼容,我们可以...

    JS_FF--IE (兼容_数据直接添加到剪切板)

    总结来说,"JS_FF--IE (兼容_数据直接添加到剪切板)" 是关于如何在JavaScript中实现跨浏览器的剪贴板操作,尤其是针对IE和Firefox这两种浏览器的不同实现方式。这个功能在网页应用中非常有用,可以让用户方便地复制...

    推拉门式菜单-兼容ie,ff

    总之,一个兼容IE和FF的推拉门式菜单需要考虑多方面的因素,包括HTML结构的合理性、CSS的跨浏览器编写和JavaScript的事件处理与动画实现。通过对这些方面进行精细调整和优化,我们可以创建出既美观又具有良好兼容性...

    jsencrypt.js 兼容IE,Chrome,FF

    jsencrypt 兼容IE8,Chrome,FF,包括exports.default,Object.defineProperty不兼容问题处理等。

    个人CSS设计兼容性问题总结教程

    另外,IE6不支持除`<a>`标签外的其他标签的`:hover`事件,可以通过jQuery或者其他JavaScript库进行模拟。 在IE6中,`height:100%`可能无效,但通过设置`position:absolute;`可以解决这个问题,不过仅限于IE7、FF等...

    JS在IE和FF中的兼容性问题

    JavaScript(简称JS)是一种广泛应用于Web开发的脚本语言,它在不同的浏览器中可能存在兼容性问题,特别是Internet Explorer(IE)和Firefox(FF)之间。这两个浏览器对JS的实现方式有所不同,导致某些特性或功能在...

    上传图片预览-兼容IE6,IE7,IE8,FF

    标题中的“上传图片预览-兼容IE6,IE7,IE8,FF”指的是一个Web开发的技术解决方案,目的是实现图片上传前的预览功能,并确保该功能在早期版本的Internet Explorer(IE6、IE7、IE8)以及Firefox浏览器上都能正常工作...

    JS 无限极菜单 兼容IE FF

    JS 无限极菜单 兼容IE FF 可更改图标

    FF--IE (兼容) 数据直接添加到剪切板

    这个给定的文件介绍了一个JavaScript函数`CopyContent`,该函数用于在Firefox(FF)和Internet Explorer(IE)浏览器中兼容性地将数据添加到用户的剪贴板。 首先,我们要理解JavaScript操作剪贴板的基本概念。在...

    兼容IE FF 省级三级联动

    在网页开发中,"兼容IE FF 省级三级联动"是一个常见的需求,涉及到前端界面交互和浏览器兼容性处理。这个需求通常出现在构建一个选择地址的下拉菜单时,用户首先选择省份,接着是城市,最后是区县,这三个级别形成一...

    ie6 ie7 ff浏览器兼容

    #### 标题解析:“ie6 ie7 ff浏览器兼容” 该标题明确指出了文章关注的核心问题——即确保网页能在IE6、IE7及Firefox等浏览器中正确显示。这意味着开发者需要采取一定的措施来适配这些浏览器,确保无论用户使用何种...

    基于Jquery可居中显示并兼容IE6+/FF等浏览器的瀑布流程序(jquery.easing.js,jquery.vgrid.js实现)

    在本项目中,通过结合Jquery库和两个特定的插件——jquery.easing.js与jquery.vgrid.js,实现了这种布局,并且确保了在包括IE6+以及Firefox在内的多种浏览器中的兼容性。 1. Jquery:Jquery是一个广泛使用的...

    日历控件(兼容IE FF)

    如果你需要在最新技术栈中使用,可能需要寻找更新的替代品,如jQuery UI的Datepicker,或者更现代的纯JavaScript库如Pickadate.js或Flatpickr。 总的来说,JSCal2-1.5作为一款经典的日历控件,对于那些关注跨浏览器...

    js拖动层,兼容IE,FF

    很简洁,很实用的js拖动层,兼容IE,FF,

    兼容IE FF复制粘贴

    兼容IE FF复制粘贴 在IE6、IE7、IE8、FireFox中均测试通过

    google鼠标经过JS特效,IE/FF兼容

    标题中的"google鼠标经过JS特效,IE/FF兼容"指的是一个JavaScript实现的特效,它在鼠标悬停(mouseover)某个元素时,会触发一个特定的动画效果,即上部的图片从小到大闪动出现。这个特效适用于谷歌浏览器(Google ...

    js绘图类库(兼容IE/FF/chrome) web流程图、图表

    1、基于raphael2.0的绘图(内含大量...2、几乎兼容所有浏览器包括ie, firefox,chrome,opera, Safari 3、内含说明文档和演示代码,详见demo文件夹 4、可动态拖动图形(贝磁曲线、动态拾色器、图表、地图导航、流程图等)。

    JS图片预览(兼容IE6、IE7、IE8和FF)

    在JavaScript(简称JS)中实现图片预览,尤其是在兼容老版本的Internet Explorer(如IE6、IE7、IE8)以及Firefox(FF)等浏览器上,需要考虑多种技术策略和兼容性问题。下面我们将详细讨论如何实现这个功能,并着重...

    js新闻上下滚动效果(兼容IE和ff)

    在本示例中,"js新闻上下滚动效果(兼容IE和ff)"指的是利用JavaScript实现一个新闻标题在网页上进行上下滚动的效果,这种效果常见于新闻网站,能够展示多条新闻,同时保持页面空间的有效利用。这个效果不仅在现代...

    Js 实现的幻灯片效果 兼容 IE FF

    5. **兼容性处理**:由于JavaScript在不同浏览器中的实现可能存在差异,特别是对于老版本的Internet Explorer (IE)和Firefox,我们需要确保代码具有良好的浏览器兼容性。这可能涉及到使用polyfills(用于提供缺失...

Global site tag (gtag.js) - Google Analytics