标题:JS的IE和Firefox兼容性汇编 出处:BIWEB开源PHP WMS系统创始人ArthurXF肖飞的blog 时间:Sun, 16 Nov 2008 12:03:02 +0000 作者:ArthurXF 地址:http://www.bizeway.net/read.php/385.htm 内容: 1.1 Form对象 现有问题: 现有代码这获得form对象通过document.forms("formName"),这样使用在IE 能接受,FF 不能。 解决方法: 改用 作为下标运算。改为document.forms["formName"] 备注 上述的改用 作为下标运算中的formName是id而name 1.2 HTML对象 现有问题: 在 IE 中,HTML 对象的 ID 可以作为 document 的下属对象变量名直接使用。在 FF 中不能。 document.all("itemName")或者document.all("itemId") 解决方法: 使用对象ID作为对象变量名 document.getElementById("itemId") 备注 document.all是IE自定义的方法,所以请大家尽量不使用。 还有一种方式,在IE和FF都可以使用 var f = document.forms["formName "]; var o = f. itemId; 1.3 DIV对象 现有问题: 在 IE 中,DIV对象可以使用ID作为对象变量名直接使用。在 FF 中不能。 DivId.style.display = "none" 解决方法: document.getElementById("DivId").style.display = "none" 备注 获得对象的方法不管是不是DIV对象,都使用getElementById方法。参见1.2 1.4 关于frame 现有问题 在 IE中 可以用window.testFrame取得该frame,FF中不行 解决方法 在frame的使用方面FF和IE的最主要的区别是: 如果在frame标签中书写了以下属性: 那么IE可以通过id或者name访问这个frame对应的window对象 而FF只可以通过name来访问这个frame对应的window对象 例如如果上述frame标签写在最上层的window里面的htm里面,那么可以这样访问 IE: window.top.frameId或者window.top.frameName来访问这个window对象 FF:只能这样window.top.frameName来访问这个window对象 另外,在FF和ie中都可以使用window.top.document.getElementById("frameId")来访问frame标签 并且可以通过window.top.document.getElementById("testFrame").src = 'xx.htm'来切换frame的内容 也都可以通过window.top.frameName.location = 'xx.htm'来切换frame的内容 1.5 窗口 现有问题 IE中可以通过showModalDialog和showModelessDialog打开模态和非模态窗口,但是FF不支持。 解决办法 直接使用window.open(pageURL,name,parameters)方式打开新窗口。 如果需要传递参数,可以使用frame或者iframe。 2.1 在JS中定义各种对象变量名时,尽量使用id,避免使用name。 在 IE 中,HTML 对象的 ID 可以作为 document 的下属对象变量名直接使用。在 FF 中不能,所以在平常使用时请尽量使用id,避免只使用name,而不使用id。 2.2 变量名与某 HTML 对象 id 相同的问题 现有问题 在 FF 中,因为对象 id 不作为 HTML 对象的名称,所以可以使用与 HTML 对象 id 相同的变量名,IE 中不能。   解决方法 在声明变量时,一律加上 var ,以避免歧义,这样在 IE 中亦可正常运行。 此外,最好不要取与 HTML 对象 id 相同的变量名,以减少错误。   Generated by Bo-blog 2.0.3 sp1