打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
js滚轮事件需要注意的兼容性问题
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        #div {
            width: 300px;
            height: 300px;
            background: red;
        }
    </style>
    <script>
        function addEvent(obj,sEv,fn){
            if(obj.addEventListener){
                return obj.addEventListener(sEv,fn,false);
            }else{
                return obj.attachEvent('on' + sEv,fn);
            }
        }

        function addWheel(obj,fn){
            function wheel(ev){
                var oEvent = ev || event;
                var bDown = true;
                bDown = oEvent.wheelDelta?oEvent.wheelDelta > 0:oEvent.detail < 0;
                fn && fn(bDown);
                oEvent.preventDefault && oEvent.preventDefault();
                return false;
            }
------------------------------------------------------------------
return false阻止浏览器默认行为,遇到绑定添加的事件的时候就失效了;
所有要用oEvent.preventDefault();在使用此方法前要做判断;
------------------------------------------------------------------
            if(window.navigator.userAgent.indexOf('Firefox') !=-1){
                obj.addEventListener('DOMMouseScroll',wheel,false);注:所有以DOM开头的只能通过事件绑定的形式添加此事件;
            }else{
                addEvent(obj,'mousewheel',wheel);
            }
        }
-------------------------------------------------------------------------------------------------
  obj.onmousewheel:滚动鼠标滚轮的时候触发;兼容IE系列和chrome;
    DOMMouseScroll:只能通过事件绑定的形式添加此事件;只兼容FF;
    兼容性问题解决方案:判断浏览器;
    oEvent.wheelDelta:不兼容FF;火狐下报undefined;
        chrome&&IE:
            下:-120;//以具体弹出数字为准
            上:120;

    oEvent.detail:
        FF:
            下:3;//以具体弹出数字为准
---------------------------------------------------------------------------------------------------
     window.onload = function () {
            var oDiv = document.getElementById('div');
            addWheel(oDiv,function(bDown){
                oDiv.onmousewheel = null;
                if(bDown){
                    oDiv.style.height = oDiv.offsetHeight - 10 + 'px';
                }else{
                    oDiv.style.height = oDiv.offsetHeight + 10 + 'px';
                }
            });
        }
    </script>
</head>
<body>
<div id="div"></div>
</body>
</html>

滚轮事件的兼容性问题比较多,所以大家在实现这个效果的时候也要随时测试兼容性的问题。
暂时整理的大概就这些,还有很多不足的地方,大家多提宝贵意见!^_^
  
标签: 滚轮事件
作者:vhStyleXie
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
JS面向对象编程
可拖动模块,文字伸缩、框架伸缩例子
dwr实现GoogleSuggest 修改bug版
javascript 仿百度穿墙特效
漂亮的JS日历控件
web前端教程:默认行为和拖拽思路
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服