兼容性

2017-03-16  本文已影响0人  adtk

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

上一篇下一篇

猜你喜欢

热点阅读