• js兼容性


    常见js兼容性

    1,JSON.stringify()

    在ie7下报错,JSON未定义,解决办法引入json2.js

    var a={a:1,b:2};
    var b=JSON.stringify(a);
    alert(b);

    2,getElementsByClassName() 和 obj.setAttribute();

    getElementsByClassName(),ie8及其以下都不支持这个方法

    setAttribute(),ie都不支持此方法

    解决ie不支持getElementsByClassName()方法:

    var claro=document.getElementsByClassName("claro");
    claro[0].setAttribute("name","xiaoming");

    3. js绑定事件兼容

    var  el=document.getElementById("id");
    
    //ie
    if(el.attachEvent){
       el.attachEvent('onclick',fn);
    //非ie
    }else if(el.addEventListener){
    
    //false事件句柄在冒泡阶段执行,true事件句柄在捕获阶段执行
    el.addEventListener("click",fn,false); }else{ el['onclick']=fn; }

    4.ajax兼容

    var  xhr;
    
    if(window.ActiveObjectX){//ie
       xhr=new window.ActiveObjectX('Microsoft.XMLHTTP');
    }else{//非ie
       xhr=new XMLHttpRequest();
    }

    5.原生js获取元素的样式: 

    style只能获取元素的内联样式,内部样式和外部样式使用style是获取不到的。
    currentStyle可以弥补style的不足,但是只适用于IE
    getComputedStyle同currentStyle作用相同,但是适用于FF、opera、safari、chrome
    var oDiv=document.getElementById('div1');
    getStyle(oDiv,'width');
    function getStyle(obj,attr){
        if(obj.currentStyle){
            return obj.currentStyle[attr];
        }else{
            return getComputedStyle(obj,false)[attr];
        }
    }

     6.Object.prototype.toString判断数据类型:

        Object.prototype.toString.apply(null) 结果:"[object Null]",ie6/7/8 返回 "[object Object]"

        Object.prototype.toString.apply(undefined) 结果:"[object Undefined]",ie6/7/8 返回 "[object Object]"

     7.当前事件的源

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

        //根据事件的冒泡原理,找到需要变更class 的LI元素
        while(target.tagName!='LI' || target.tagName=='BODY'){
           target=target.parentNode;
        } 

       //给当前元素加上class big
       target.className += ' big';

    8.常见兼容代码:

    function addEventListener(target,type,handler){
         if(target.addEventLister){
             target.addEventLister(type,handler);
         }else if(target.attachEvent){
             target.attachEvent('on'+type,function(){
                handler.call(target);
             })
         }else{
            target['on'+type]=handler;
    
         }
    }
    
    function removeEventLister(target,type,handler){
        if(target.removeEventListener){
           target.removeEventListener(type,handler);
        }else if(target.detachEvent){
           target.detachEvent('on'+type,handler);
        }else{
           target['on'+type]=null;
        }
    }
    
    //获取目标对象
    
    function getTarget(e){
        var e=window.event||e,target;
        if(e.target){
           target=e.target;
        }else{
           target=e.srcElement;
        }
        return target;
    }
    
    //停止冒泡
    
    function stopPropagation(e){
        var e=window.event||e;
        if(e.stopPropagation){
          e.stopPropagation();
        }else{
          e.cancelBubble=true;
        }
    }
    
    //阻止默认行为
    
    function preventDefault(e){
        var e=window.event||e;
        if(e.preventDefault){
          e.preventDefault();
        }else{
          e.returnValue=false;
        }
    }
  • 相关阅读:
    JAVA程序员_常用英语
    Java基础常见英语词汇
    oracle sqlplus常用命令大全
    Ognl_JSTL_学习笔记
    DBA操作
    ssh面试题总结
    数据库面试笔试题集
    基本select 语句总结
    JSP面试知识
    featureCounts 软件说明
  • 原文地址:https://www.cnblogs.com/xiaotaiyang/p/5611128.html
Copyright © 2020-2023  润新知