zoukankan      html  css  js  c++  java
  • 浏览器事件兼容性问题

    一、背景透明的元素在 ie 里 加不上事件的解决方法

      场景:

    <div class="box">
        <div class="box_bj"></div>  <!--box_bj 为宽高自适应父级大小,背景透明  -->
    </div>
    
    <script type="text/javascript">
        $('.box_bj').on('click',function(){
            alert('box_bj被点击了')  // 在IE 低版本下,点击没反应。
        })
    </script>

      解决方案:

    <style type="text/css">
        /* 方法一 */
        .box_bj{background-image: url("data:image/gif, base64,AAAA");}
    
        /* 方法二  (随便找张图片做背景图片,然后调整位置让其不可见) */
        .box_bj{background: url(styles/images/test.jpg) 0 10000px no-repeat;}
    </style>

     二、jquery 鼠标滚轮事件兼容写写法

      兼容写法:

        $(function(){
            $(document).on("mousewheel DOMMouseScroll", function (e) {
                
                /*这条是网上搜到滚轮对象兼容性判断,但并不好用*/
                /*var delta = (e.originalEvent.wheelDelta && (e.originalEvent.wheelDelta > 0 ? 1 : -1)) ||  // chrome & ie
                            (e.originalEvent.detail && (e.originalEvent.detail > 0 ? -1 : 1));        // firefox
                            */
    
                /*这个自己写的,兼容谷歌火狐ie*/                
                var delta = e.originalEvent.wheelDelta || (e.originalEvent.detail && (e.originalEvent.detail > 0 ? -1 : 1));  
                if (delta > 0) {
                    // 向上滚
                    console.log("wheelup");
                } else if (delta < 0) {
                    // 向下滚
                    console.log("wheeldown");
                }    
            });
        })

      阻止事件频繁重复触发:

        $(function(){
            var valve = true;
            $(document).on("mousewheel DOMMouseScroll", function (e) {
                var delta = e.originalEvent.wheelDelta || (e.originalEvent.detail && (e.originalEvent.detail > 0 ? -1 : 1));  
                if(valve){
                    valve = false;
                    if (delta > 0) {
                        setTimeout(function(){
                            // 向上滚
                             console.log("wheelup");
                             valve = true;
                        },200)
                    } else if (delta < 0) {
                        setTimeout(function(){
                            // 向下滚
                            console.log("wheeldown");
                            valve = true;
                        },200)
                    }
                }             
            });
        })
    
        // 上面是开关加定时器的写法,功能是实现了, 但如果用类似于animate的事件完成回调 去打开开关会更好些。
  • 相关阅读:
    设备arduino的编译目录
    c# await 关键字错误
    开篇 hello 内Cool超人
    在Windows Azure虚拟机上开发Windows 8 应用
    使用LVS实现负载平衡之Windows Server 2008配置
    IDC Digital Transition Annual Festival(2018.10.19)
    Dell Technology Summit(2018.10.17)
    Lean Data Innovation Sharing Salon(2018.09.15)
    Trusted Block Chain Summit(2018.10.09)
    Artificial Intelligence Computing Conference(2018.09.12)
  • 原文地址:https://www.cnblogs.com/ysxq/p/7026051.html
Copyright © 2011-2022 走看看