首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

Javascript的IE和Firefox兼容性有关问题集合

2012-10-29 
Javascript的IE和Firefox兼容性问题集合(1)访问frame对象:??[ ie中返回的为object , ff中会显示具体的类型

Javascript的IE和Firefox兼容性问题集合

(1)访问frame对象:?? [ ie中返回的为object , ff中会显示具体的类型 比如: object window ]

IE:使用window.frameId或者window.frameName来访问这个frame对象. frameId和frameName可以同名。

Firefox:只能使用window.frameName来访问这个frame对象.

另外,在IE和Firefox中都可以使用window.document.getElementById("frameId")来访问这个frame对象.

(2)切换frame内容:

在IE和Firefox中都可以使用window.document.getElementById("testFrame").src = "xxx.html"或window.frameName.location = "xxx.html"来切换frame的内容.

如果需要将frame中的参数传回父窗口(注意不是opener,而是parent frame),可以在frme中使用parent来访问父窗口。例如:parent.document.form1.filename.value="Aqing";

?

14.body问题

Firefox的body在body标签没有被浏览器完全读入之前就存在;而IE的body则必须在body标签被浏览器完全读入之后才存在.

?

15. 事件委托方法

IE:document.body.onload = inject; //Function inject()在这之前已被实现

Firefox:document.body.onload = inject();

?

16. firefox与IE的父元素(parentElement)的区别

IE:obj.parentElement

firefox:obj.parentNode

解决方法: 因为firefox与IE都支持DOM,因此使用obj.parentNode是不错选择.

?

17.cursor:hand VS cursor:pointer

firefox不支持hand,但ie支持pointer

解决方法: 统一使用pointer

?

18.innerText在IE中能正常工作,但是innerText在FireFox中却不行. 需用textContent。

解决方法:

if(navigator.appName.indexOf("Explorer") > -1){

??? document.getElementById('element').innerText = "my text";

} else{

??? document.getElementById('element').textContent = "my text";

}

?

19. FireFox中设置HTML标签的style时,所有位置性和字体尺寸的值必须后跟px。这个ie也是支持的。

?

20. ie,firefox以及其它浏览器对于 table 标签的操作都各不相同,在ie中不允许对table和tr的innerHTML赋值,使用js增加一个tr时,使用appendChild方法也不管用。

解决方法:

//向table追加一个空行:

var row = otable.insertRow(-1);

var cell = document.createElement("td");

cell.innerHTML = " ";

cell.className = "XXXX";

row.appendChild(cell);

?

21. padding 问题

padding 5px 4px 3px 1px FireFox无法解释简写,

必须改成 padding-top:5px; padding-right:4px; padding-bottom:3px; padding-left:1px;

?

22. 消除ul、ol等列表的缩进时

样式应写成:list-style:none;margin:0px;padding:0px;

其中margin属性对IE有效,padding属性对FireFox有效

?

23. CSS透明

IE:filter:progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=60)。

FF:opacity:0.6。

?

24. CSS圆角

IE:不支持圆角。

FF: -moz-border-radius:4px,或者-moz-border-radius-topleft:4px;-moz-border- radius-topright:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius- bottomright:4px;。

?

25. CSS双线凹凸边框

IE:border:2px outset;。

FF: -moz-border-top-colors: #d4d0c8 white;-moz-border-left-colors: #d4d0c8 white;-moz-border-right-colors:#404040 #808080;-moz-border-bottom-colors:#404040 #808080;

?

26. 对select的options集合操作

枚举元素除了[]外,SelectName.options.item()也是可以的, 另外SelectName.options.length, SelectName.options.add/remove都可以在两种浏览器上使用。注意在add后赋值元素,否则会失败(本人试验如此)。

?

27. XMLHTTP的区别

//mf

if (window.XMLHttpRequest) //mf

{

xmlhttp=new XMLHttpRequest()

xmlhttp.onreadystatechange=xmlhttpChange

xmlhttp.open("GET",url,true)

xmlhttp.send(null)

}

//ie

else if (window.ActiveXObject) // code for IE

{

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")

??? if (xmlhttp)

??? {

??? xmlhttp.onreadystatechange=xmlhttpChange

??? xmlhttp.open("GET",url,true)

??? xmlhttp.send()

??? }

}

}

?

28. innerHTML的区别

Firefox不支持innerHTML, 解决办法可以如下

?????? rng = document.createRange();

?????? el = document.getElementById(elementid);

?????? rng.setStartBefore(el);

?????? htmlFrag = rng.createContextualFragment(content);

?????? while (el.hasChildNodes()) //清除原有内容,加入新内容

????????????? el.removeChild(el.lastChild);

?????? el.appendChild(htmlFrag);

热点排行