JavaScript的兼容问题总结1

JavaScript的兼容问题1

<script>
        //
         // 特殊标签的获取
        // 两种方法都行
        // 方法1,低版本IE浏览器也支持
        // 方法2,不兼容低版本IE浏览器
        // 1,body标签
        方法1:var oBody1 = document.body;
        方法2:var oBody2 = document.querySelector('body');
        console.log(oBody1);
        console.log(oBody2);
        // 2,head标签
        方法1:var oHead1 = document.head;
        方法2:var oHead2 = document.querySelector('head');
        // 3,html标签
        方法1:var oHtml1 = document.documentElement;
        方法2:var oHtml2 = document.querySelector('html');
        console.log(oHtml1);
        console.log(oHtml2);
// -------------------------------------------------------------

        // 获取滚动高度执行效果:
        // 兼容语法:
        // 两种方法,一种可以获取数值,另一种结果一定是0
        // 通过逻辑或运算符 执行 短路赋值
        // 最终结果一定是有数据的数值
        var h = document.documentElement.scrollTop || document.body.scrollTop;
        var w = document.documentElement.scrollLeft || document.body.scrollLeft;
// -------------------------------------------------------------
        //对监听事件处理函数的兼容的问题
        // 普通浏览器
        // oDiv.addEventListener('click' , function(){})
        // IE低版本浏览器
        // oDiv.attachEvent('onclick' , function(){})
        // 兼容处理 事件对象 事件类型 事件额处理的函数
        // 通过函数的方式来实现兼容处理
        // 需要设定3个参数,分别是,事件对象,事件类型,事件处理函数
        // 参数1,事件对象     需要绑定监听事件的标签对象
        // 参数2,事件类型     绑定的事件类型,没有on的事件类型
        // 参数3,事件处理函数 最好是函数名称,也可以是匿名函数
        function myAddEvent(ele , type , fun){
            if( ele.addEventListener ){
                ele.addEventListener(type , fun);
            }else{
                ele.attachEvent('on'+ type , fun);
            }
        }
        // 通过函数,以兼容过的方式,给标签绑定监听事件
        myAddEvent( oDiv , 'click' , function(){console.log(123)} );
        myAddEvent( oP , 'click' ,  fun2);
// -------------------------------------------------------------

        // 兼容语法,获取标签的原始数据
        if (window.getComputedStyle) {
                left = window.getComputedStyle(oDiv).left;
                top = window.getComputedStyle(oDiv).top;
            } else {
                //低版本的IE
                left = oDiv.currentStyle.left;
                top = oDiv.currentStyle.top;
            }
// -------------------------------------------------------------

        // 1,兼容事件对象
        e = e || window.event;
        // 2,兼容按键编码
        var keyCode = e.keyCode || e.which;
// -------------------------------------------------------------

        //阻止浏览器的默认事件的方法的兼容
        if(e.preventDefault){
            // 普通浏览器,阻止默认事件的方式
            e.preventDefault()
        }else{
            // 低版本IE浏览器阻止默认事件方式
            e.returnValue = false;
        }
    
        console.log(123);
// -------------------------------------------------------------
    // 阻止冒泡 和 捕获 事件的传播。
    if(e.stopPropagation){
        e.stopPropagation();
       }else{
            e.cancelBubble = true;
       }```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值