`

JavaScript在IE和Firefox的兼容性总结

阅读更多
1.document.formName.item("itemName") 问题

说明:IE下,可以使用document.formName.item("itemName")或document.formName.elements["elementName"];Firefox下,只能使用document.formName.elements["elementName"].

解决方法:统一使用document.formName.elements["elementName"].

JQUERY:

$("#idName")

  

2.集合类对象问题

说明:IE下,可以使用()或[]获取集合类对象;Firefox下,只能使用[]获取集合类对象.

解决方法:统一使用[]获取集合类对象.

JQUERY:[]

JQUERY.each(obj,callback) 通用的遍历方法,可用于遍历数组和对象

  

3.自定义属性问题

说明:IE下,可以使用获取常规属性的方法来获取自定义属性,也可以使用getAttribute()获取自定义属性;Firefox下,只能使用getAttribute()获取自定义属性.

解决方法:统一通过getAttribute()获取自定义属性.

JQUERY: attr

attr(name) //取得一个匹配元素的属性值. return Object;

attr(properties) // 将一个"名/值"形式的对象设置为所有匹配元素的属性. return jQuery;

attr(key,value) //为所有匹配元素设置一个属性值。

attr(key,fn) //为所有匹配元素设置一个计算的属性值。

removeAttr(name) //从每个匹配的元素删除属性

  

4.eval("idName")问题

说明:IE下,,可以使用eval("idName")或getElementById("idName")来取得id为idName的HTML对象;Firefox下只能使用getElementById("idName")来取得id为idName的HTML对象.

解决方法:统一用getElementById("idName")来取得id为idName的HTML对象.

  

  

5.变量名与某HTML对象ID相同的问题

说明:IE下,HTML对象的ID可以作为document的下属对象变量名直接使用;Firefox下则不能.Firefox下,可以使用与HTML对象ID相同的变量名;IE下则不能。

解决方法:使用document.getElementById("idName")代替document.idName.最好不要取HTML对象ID相同的变量名,以减少错误;在声明变量时,一律加上var,以避免歧义.

  

6.const问题

说明:Firefox下,可以使用const关键字或var关键字来定义常量;IE下,只能使用var关键字来定义常量.

解决方法:统一使用var关键字来定义常量.

  

  

7.input.type属性问题

说明:IE下input.type属性为只读;但是Firefox下input.type属性为读写.

  

  

8.window.event问题

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

解决方法:

IE:

<input name="Button8_1" type="button" value="IE" onclick="javascript:gotoSubmit8_1()"/>

...

<script language="javascript">

function gotoSubmit8_1() {

...

alert(window.event); //use window.event

...

}

</script>

IE&Firefox:

<input name="Button8_2" type="button" value="IE" onclick="javascript:gotoSubmit8_2(event)"/>

...

<script language="javascript">

function gotoSubmit8_2(evt) {

...

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

alert(evt); //use evt

...

}

</script>

  

9.event.x与event.y问题

说明:IE下,even对象有x,y属性,但是没有pageX,pageY属性;Firefox下,even对象有pageX,pageY属性,但是没有x,y属性.

解决方法:使用mX(mX = event.x ? event.x : event.pageX;)来代替IE下的event.x或者Firefox下的event.pageX.

  

10.event.srcElement问题

说明:IE下,even对象有srcElement属性,但是没有target属性;Firefox下,even对象有target属性,但是没有srcElement属性.

解决方法:使用obj(obj = event.srcElement ? event.srcElement : event.target;)来代替IE下的event.srcElement或者Firefox下的event.target.

  

  

11.window.location.href问题

说明:IE或者Firefox2.0.x下,可以使用window.location或window.location.href;Firefox1.5.x下,只能使用window.location.

解决方法:使用window.location来代替window.location.href.

  

  

12.模态和非模态窗口问题

说明:IE下,可以通过showModalDialog和showModelessDialog打开模态和非模态窗口;Firefox下则不能.

解决方法:直接使用window.open(pageURL,name,parameters)方式打开新窗口。

如果需要将子窗口中的参数传递回父窗口,可以在子窗口中使用window.opener来访问父窗口. 例如:var parWin = window.opener; parWin.document.getElementById("Aqing").value = "Aqing";

  

13.frame问题

以下面的frame为例:

<frame src="/xxx.html" id="frameId" name="frameName" />

(1)访问frame对象:

IE:使用window.frameId或者window.frameName来访问这个frame对象.

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中的参数传回父窗口,可以在frme中使用parent来访问父窗口。例如:parent.document.form1.filename.value="Aqing";

  

  

14.body问题

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

例如:

Firefox:

<body>

<script type="text/javascript">

document.body.onclick = function(evt){

evt = evt || window.event;

alert(evt);

}

</script>

</body>

IE&Firefox:

<body>

</body>

<script type="text/javascript">

document.body.onclick = function(evt){

evt = evt || window.event;

alert(evt);

} </script>

  

  

15. 事件委托方法

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

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

有人说标准是:

document.body.onload=new Function('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中却不行.

解决方法:

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

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

} else{

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

}

  

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

解决方法:

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



16、访问的父元素的区别

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

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

17、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";

}

[注] innerHTML 同时被ie、firefox等浏览器支持,其他的,如outerHTML等只被ie支持,最好不用。

18、Table操作问题

问题说明:ie、firefox以及其它浏览器对于 table 标签的操作都各不相同,在ie中不允许对table和tr的innerHTML赋值,使用js增加一个tr时,使用appendChild方法也不管用。document.appendChild在往表里插入行时FIREFOX支持,IE不支持

解决办法:把行插入到TBODY中,不要直接插入到表

解决方法:

//向table追加一个空行:

var row = otable.insertRow(-1);

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

cell.innerHTML = "";

cell.className = "XXXX";

row.appendChild(cell);

[注] 建议使用JS框架集来操作table,如JQuery。

19、对象宽高赋值问题

问题说明:FireFox中类似 obj.style.height = imgObj.height 的语句无效。

解决方法:统一使用 obj.style.height = imgObj.height + 'px';

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

FIREFOX支持(除了IE,现在所有浏览器都支持),IE不支持

解决办法:不用setAttribute('style','color:red')

而用object.style.cssText = 'color:red;'(这写法也有例外)

最好的办法是上面种方法都用上,万无一失

21、类名设置

setAttribute('class','styleClass')

FIREFOX支持,IE不支持(指定属性名为class,IE不会设置元素的class属性,相反只使用setAttribute时IE自动识CLASSNAME属性)

解决办法:

setAttribute('class','styleClass')

setAttribute('className','styleClass')

或者直接 object.className='styleClass';

IE和FF都支持object.className。

22、用setAttribute设置事件

var obj = document.getElementById('objId');

obj.setAttribute('onclick','funcitonname();');

FIREFOX支持,IE不支持

解决办法:

IE中必须用点记法来引用所需的事件处理程序,并且要用赋予匿名函数

如下:

var obj = document.getElementById('objId');

obj.onclick=function(){fucntionname();};

这种方法所有浏览器都支持

23、建立单选钮

IE以外的浏览器

var rdo = document.createElement('input');

rdo.setAttribute('type','radio');

rdo.setAttribute('name','radiobtn');

rdo.setAttribute('value','checked');

IE:

var rdo =document.createElement("<input name="radiobtn" type="radio" value="checked" />");

解决办法:

这一点区别和前面的都不一样。这次完全不同,所以找不到共同的办法来解决,那么只有IF-ELSE了

万幸的是,IE可以识别出document的uniqueID属性,别的浏览器都不可以识别出这一属性。问题解决。
转自:http://www.cnblogs.com/xyicheng/archive/2010/02/26/1674109.html
1
2
分享到:
评论

相关推荐

    javascript在IE和Firefox中兼容性问题

    本篇将主要探讨JavaScript在Internet Explorer (IE) 和Firefox之间的兼容性挑战,并通过给出的文件名列表解析这些测试用例所涉及的知识点。 1. **createDocument测试.html** 在IE和Firefox中,创建XML文档的方法...

    Javascript的IE和Firefox兼容性参考

    以下是一些常见的JavaScript在IE和Firefox中的兼容性问题及解决方案: 1. **document.form.item问题** - 在IE中,可以通过`document.formName.item("itemName")`来访问表单元素,但在Firefox中不支持。推荐使用...

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

    以下是一些常见的JavaScript在IE和Firefox上的兼容性问题及其解决策略: 1. **事件处理**:IE使用attachEvent方法添加事件监听器,而Firefox则使用addEventListener。为确保兼容,可以创建一个跨浏览器的事件处理...

    Javascript的IE和Firefox(火狐)兼容性

    ### Javascript的IE与Firefox(火狐)兼容性解决方案 在Web开发过程中,浏览器兼容性问题一直是开发者们关注的重点之一。由于不同的浏览器对于Web标准的支持程度存在差异,这导致了同样的代码在不同浏览器中的表现...

    javascript在firefox与ie下的兼容性总结

    JavaScript在Firefox和IE之间的兼容性问题一直是前端开发者面临的一大挑战。由于这两个浏览器内核的不同,导致在处理某些JavaScript特性时存在差异。以下是一些常见的兼容性问题及其解决方案: 1. **Document.form....

    DOM文档和Javascript的IE和Firefox兼容性

    "Javascript的IE和Firefox兼容性"则涉及到JavaScript在不同浏览器中的行为一致性问题。Internet Explorer(IE)和Mozilla Firefox是两个历史悠久且具有广泛用户基础的浏览器,它们对JavaScript的支持存在差异,尤其...

    JavaScript在IE和Firefox(火狐)的不兼容问题解决

    这表明文章旨在探讨并提供解决方案来处理在不同浏览器环境下的JavaScript兼容性问题,尤其是在Internet Explorer(IE)和Mozilla Firefox(火狐)这两个浏览器上。下面将深入解析文件中的部分代码示例,以及给出的一...

    Javascript的IE和Firefox兼容性.doc

    JavaScript是一种广泛应用于网页和网络应用的脚本语言,它在不同的浏览器中可能存在兼容性问题,尤其是Internet Explorer(IE)和Firefox。这些差异主要源于不同浏览器对JavaScript标准的实现不一致。以下是一些常见...

    Javascript的IE和Firefox兼容性汇编 .txt

    ### JavaScript的IE与Firefox兼容性问题详解 #### 引言 在Web开发中,确保脚本能在不同浏览器间正常运行是非常重要的。特别是对于早期版本的Internet Explorer (IE) 和 Firefox (MF),由于它们对JavaScript的支持...

    javascript的IE和Firefox兼容性汇编

    ### JavaScript的IE与Firefox兼容性解决方案 #### 一、`document.form.item` 问题 - **现有问题**:代码中存在大量使用 `document.formName.item("itemName")` 的语句,这种写法在 Mozilla Firefox(简称MF)...

    IE FIREFOX兼容性测试

    综上所述,“IE FIREFOX兼容性测试”是为了确保网站在IE和Firefox这两个重要浏览器上的良好体验。开发者应重视兼容性测试,并学习和掌握相应的解决策略,以提高网页的跨浏览器兼容性。提供的“IE-FIREFOX兼容.html”...

    Javascript在IE和FireFox中的兼容处理

    以上只是JavaScript在IE与Firefox中兼容性问题的一部分,实际开发中可能遇到更多细节。解决这些问题需要对两种浏览器的特性有深入理解,并使用条件注释、polyfills和现代JavaScript库(如jQuery)来确保代码在各种...

    IE和Firefox的Javascript兼容性总结.docx

    JavaScript 兼容性问题在开发跨浏览器的网页应用时至关重要,尤其是针对IE和Firefox这两个具有显著差异的浏览器。本文将详细探讨这些差异,并提供相应的兼容性处理方案。 首先,我们来看函数和方法的差异。在...

    IE和FIREFOX的JAVASCRIPT兼容性总结.pdf

    在Web开发中,JavaScript的兼容性是至关重要的,尤其是在IE(Internet Explorer)和Firefox这两个浏览器之间。由于它们对JavaScript的实现存在显著差异,开发者需要掌握这些差异并采取适当的兼容处理措施。以下是...

    让IE和火狐同时兼容

    特别是在早期的Web时代,Internet Explorer(简称IE)与Mozilla Firefox(简称火狐)这两款浏览器之间存在着显著的差异,这使得页面设计师不得不花费大量时间去解决它们之间的兼容性问题。本文将详细介绍如何使网站...

    IE和Firefox的Javascript兼容性总结终版.pdf

    JavaScript兼容性问题一直是Web开发中的一个痛点,尤其是在处理IE与Firefox之间差异时。本文将深入探讨两者在JavaScript函数和方法、样式访问和设置、DOM操作、事件处理以及其他方面的兼容性处理,帮助开发者解决跨...

    IE和Firefox的Javascript兼容性总结[定义].pdf

    JavaScript兼容性问题一直以来都是Web开发中的重要议题,尤其是在IE与Firefox之间。这两个浏览器对JavaScript的实现存在诸多差异,导致开发者需要进行额外的工作以确保代码在各个浏览器上的表现一致。以下是一些关键...

Global site tag (gtag.js) - Google Analytics