日期:2014-05-16  浏览次数:20443 次

JavaScript在IE和Firefox下的兼容性问题

(一)
问题1:获取一个元素对象的引用,在IE下,可直接使用该元素对象的id名;而在FireFox下,只能使用getElementById(idName)方法。
解决方法:统一用getElementById(idName)。?
问题2:获取表单元素的引用,在IE下,可通过form.item('username')这种形式;而在FireFox下,只能通过form.elements['username']。(注:var form = document.getElementById("form");)
解决方法:统一用form.elements['username']这种形式。
问题3:访问集合对象成员时,在IE下,可通过
Js代码

Java代码 复制代码
  1. 1.?var?elements?=?form.elements;?var?firstElement?=?elements(0);????
1. var?elements?=?form.elements;?var?firstElement?=?elements(0);??


?而在Firefox下,只能通过
Java代码

Java代码 复制代码
  1. 1.?var?elements?=?form.elements;?var?firstElement?=?elements[0];????
1. var?elements?=?form.elements;?var?firstElement?=?elements[0];??


?解决方法:统一用方括号加下标索引来访问。
问题4:读取自定义属性,在IE下,可像操作对象属性一样直接访问;而在FireFox下,只能通过getAttribute(attrName)方式访问。
解决方法:统一用getAttribute(attrName)方式访问。
问题5:常量的定义,在FireFox下能通过const关键词定义,如const PI = 3.14; 而在IE下却报错。
解决方法:统一用var定义,如var PI = 3.14; 区别常量和变量可用大小写字母来区别。
问题6:input元素的type属性,在FireFox下可修改其type的值;如:
Js代码

Java代码 复制代码
  1. 1.?var?input?=?document.getElementById("button1");?? ??
  2. ????2.?input.type?=?"text";??//将按钮变成输入框????
1. var?input?=?document.getElementById("button1");??
	2. input.type?=?"text";??//将按钮变成输入框??


?但在IE下却不能这样使用。
解决方法:无
问题7:模式窗口window.showModalDialog(...)和非模式窗口window.showModelessDialog(...),只能在IE下运行,而在Firefox下却用不了。
解决方法:统一用window.open(...)代替。
问题8:frame操作问题,在IE中,可通过window.frameId或者window.frameName即可获得对frame页面window对象的引用; 而在FireFox下,只能通过window.frameName来获得。如下:

Java代码 复制代码
  1. Html代码? ??
  2. ????1.?<script?type="text/javascript">?? ??
  3. ????2.??????//只有IE支持?? ??
  4. ????3.?????//window.frameId.location?=?"http://www.iteye.com";?? ??
  5. ????4.?????//IE,FireFox都支持?? <