兼容性

作者: adtk | 来源:发表于2017-03-16 14:58 被阅读0次

    ajax:

    new XMLHttpRequest(); //IE7+
    new ActiveXObject("Microsoft.XMLHTTP");

    function creatajax(){ 
        var ajax=null; 
        if (window.XMLHttpRequest){ 
            //对于Mozilla、Netscape、Safari等浏览器,创建XMLHttpRequest对象 
            ajax = new XMLHttpRequest(); 
            if (ajax.overrideMimeType){ 
                //如果服务器响应的header不是text/xml,可以调用其它方法修改该header 
                ajax.overrideMimeType('text/xml'); 
            } 
        } else if (window.ActiveXObject){ 
            // 对于Internet Explorer浏览器,创建XMLHttpRequest 
            try{ 
                ajax = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e){ 
                try{ 
                    ajax = new ActiveXObject("Msxml2.XMLHTTP"); 
                } catch (e){} 
            } 
        } 
        return ajax; 
    }
    

    input.type属性问题

    问题说明:

    IE下 input.type 属性为只读;
    但是Firefox下 input.type 属性为读写。

    解决办法:

    可以先隐藏原来的input,然后在同样的位置再插入一个新的input元素。

    window.event问题

    问题说明:

    window.event 只能在IE下运行,
    而不能在Firefox下运行,这是因为Firefox的event只能在事件发生的现场使用。

    解决方法:

    在事件发生的函数上加上event参数,在函数体内(假设形参为evt),使用:

    event = evt?evt:(window.event?window.event:null) 
    

    event.x与event.y问题

    问题说明:

    IE下,even对象有x、y属性,但是没有pageX、pageY属性;
    Firefox下,even对象有pageX、pageY属性,但是没有x、y属性。

    解决方法:
    var myX = event.x ? event.x : event.pageX; 
    var myY = event.y ? event.y:event.pageY; 
    

    event.srcElement问题

    作用:获得触发事件的元素

    问题说明:

    IE下,even对象有srcElement属性,但是没有target属性;Firefox下,even对象有target属性,但是没有srcElement属性。

    访问的父元素的区别

    问题说明:

    在IE下,使用 obj.parentElement 或 obj.parentNode 访问obj的父结点;在firefox下,使用 obj.parentNode 访问obj的父结点。

    解决方法:

    因为firefox与IE都支持DOM,因此统一使用obj.parentNode 来访问obj的父结点。

    innerText的问题.

    问题说明:

    innerText在IE中能正常工作,
    但是innerText在FireFox中却不行。

    解决方法:

    在非IE浏览器中使用textContent代替innerText。
    示例:

    if(navigator.appName.indexOf("Explorer") >-1){ 
    document.getElementById('element').innerText = "my text"; 
    } else{ 
    document.getElementById('element').textContent = ";my text"; 
    } 
    

    对象宽高赋值问题

    问题说明:

    FireFox中类似 obj.style.height = imgObj.height 的语句无效。

    解决方法:

    统一使用

    obj.style.height = imgObj.height + ‘px'; 
    

    setAttribute('style','color:red;')

    除了IE,现在所有浏览器都支持

    解决办法:

    用object.style.cssText = ‘color:red;'

    类名设置

    问题说明:

    setAttribute('class','styleClass')
    IE不支持(指定属性名为class,IE不会设置元素的class属性,相反IE用setAttribute时识别className属性)

    解决办法:
    setAttribute('class','styleClass') 
    setAttribute('className','styleClass') 
    或者直接 
    object.className='styleClass'; ```
    IE和FF都支持object.className。 
    
    ####建立单选钮 :
    >IE以外的浏览器 
    

    var rdo = document.createElement('input');
    rdo.setAttribute('type','radio');
    rdo.setAttribute('name','radiobtn');
    rdo.setAttribute('value','checked');

    IE: 
    

    document.createElement(”<input name=”radiobtn” type=”radio” value=”checked” />”); ```

    圆角:

    ie8及以下 不支持 CSS3 中的圆角属性。

    事件冒泡与捕获,默认行为

    http://www.jianshu.com/p/544275dbe0c3

    相关文章

      网友评论

          本文标题:兼容性

          本文链接:https://www.haomeiwen.com/subject/hfywbttx.html