JS中兼容问题的汇总

Posted lxylhj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS中兼容问题的汇总相关的知识,希望对你有一定的参考价值。

  获取非行内样式的兼容方式

function getStyle(obj,attr){  //获取非行间样式,obj是对象,attr是值
     if(obj.currentStyle){                //针对ie获取非行间样式
          return obj.currentStyle[attr];
      }else{
          return getComputedStyle(obj,false)[attr];   //针对非ie
        }
    }

 

  获取事件对象的兼容方式

document.onclick=function(eve){
        var e=eve||window.event;
        console.log(e);
    }

 

  事件冒泡的兼容方法

function stopBubble(e){
        if(e.stopPropagation){
            e.stopPropagation();
        }else{
            e.cancelBubble = true;//兼容ie
        }
    }

 

  阻止浏览器默认行为的兼容方法

    if( e.preventDefault ){
        e.preventDefault();
    }else{
        window.event.returnValue = false;//ie
    }

 

  监听事件的设置和移除的兼容方式

1.封装成对象的方式
    var EventUtil={
        addHandler:function(DOM,EventType,fn){
            if(DOM.addEventListener){
                DOM.addEventListener(EventType,fn,false);
            }else if(DOM.attachEvent){
                DOM.attachEvent(on+EventType,fn)
            }else{
                DOM[on+EventType]=fn
            }
        },
        removeHandler:function(DOM,EventType,fn){
            if(DOM.removeEventListener){
                DOM.removeEventListener(EventType,fn,false)
            }else if(DOM.detachEvent){
                DOM.detachEvent(on+EventType,fn)
            }else{
                DOM[on+EventType]=null;
            }
        }
    }


2.封装成两个函数的方式
    function addEvent(obj,inci,back){
        if(obj.addEventListener){
            obj.addEventListener(inci,back);
        }else if(obj.attachEvent){
            obj.attachEvent("on" + inci,back);
        }else{
            obj["on"+inci] = back;
        }
    }
          
    function removeEvent(obj,inci,back){
        if(obj.removeEventListener){
            obj.removeEventListener(inci,back,false);
        }else if(obj.detachEvent){
            obj.detachEvent("on" + inci,back);
        }else{
            obj["on"+inci] = null;
        }
    }

 

  事件委托的兼容方法

var oul = document.querySelector("ul")
    oul.onclick = function(eve){
        var e = eve || window.event;

        var t = e.target || e.srcElement;

        if(t.getAttribute("abc") == "l"){
            console.log(e.target.innerhtml)
        }
        
    }

 

  键盘事件的兼容方法

var eve = eve||window.event;
var keyC = eve.keyCode||eve.which;

 

  以上是本人在学习js过程中遇见的几个兼容方式的汇总,如果哪里有错误希望大家指出,谢谢。

以上是关于JS中兼容问题的汇总的主要内容,如果未能解决你的问题,请参考以下文章

JS跨浏览器兼容性解决思路及方案汇总

近段时间js的兼容性问题的汇总

浏览器兼容性汇总(CSS+js)

js的event事件对象汇总

js兼容性汇总

十条jQuery代码片段助力Web开发效率提升