一聚教程网:一个值得你收藏的教程网站

热门教程

IE7.0 IE6.0和Fox 对于相同的源代码解析些有不同

时间:2022-07-02 13:14:06 编辑:袖梨 来源:一聚教程网

1. 对象问题
1.1 Form对象
现有问题:
现有代码这获得form对象通过forms("formName"),这样使用在IE 能接受,MF 不能。
解决方法:
改用 作为下标运算。改为forms["formName"]
备注
上述的改用 作为下标运算中的formName是id而name

1.2 HTML对象
现有问题:
在 IE 中,HTML 对象的 ID 可以作为 document 的下属对象变量名直接使用。在 MF 中不能。
all("itemName")或者all("itemId")
解决方法:
使用对象ID作为对象变量名
getElementById("itemId")
备注
all是IE自定义的方法,所以请大家尽量不使用。
还有一种方式,在IE和MF都可以使用
var f = forms["formName "];
var o = f. itemId;

1.3 DIV对象
现有问题:
在 IE 中,DIV对象可以使用ID作为对象变量名直接使用。在 MF 中不能。
DivId.style.display = "none"
解决方法:
getElementById("DivId").style.display = "none"
备注
获得对象的方法不管是不是DIV对象,都使用getElementById方法。参见1.2


1.4 关于
现有问题
在 IE中 可以用test取得该,mf中不行
解决方法
在的使用方面MF和IE的最主要的区别是:
如果在标签中书写了以下属性:

那么IE可以通过id或者name访问这个对应的window对象
而mf只可以通过name来访问这个对应的window对象
例如如果上述标签写在最上层的window里面的htm里面,那么可以这样访问
IE: top.Id或者top.Name来访问这个window对象
MF:只能这样top.Name来访问这个window对象
另外,在mf和ie中都可以使用top.getElementById("Id")来访问标签
并且可以通过top.getElementById("test").src = 'xx.htm'来切换的内容
也都可以通过top.Name.location = 'xx.htm'来切换的内容

1.5 窗口
现有问题
IE中可以通过showModalDialog和showModelessDialog打开模态和非模态窗口,但是MF不支持。
解决办法
直接使用open(pageURL,name,parameters)方式打开新窗口。
如果需要传递参数,可以使用或者i。

2. 总结
2.1 在JS中定义各种对象变量名时,尽量使用id,避免使用name。
在 IE 中,HTML 对象的 ID 可以作为 document 的下属对象变量名直接使用。在 MF 中不能,所以在平常使用时请尽量使用id,避免只使用name,而不使用id。

2.2 变量名与某 HTML 对象 id 相同的问题
现有问题
在 MF 中,因为对象 id 不作为 HTML 对象的名称,所以可以使用与 HTML 对象 id 相同的变量名,IE 中不能。
解决方法
在声明变量时,一律加上 var ,以避免歧义,这样在 IE 中亦可正常运行。
此外,最好不要取与 HTML 对象 id 相同的变量名,以减少错误。


1. all
  Firefox可以兼容all, 但会生成一条警告。可以用getElementById("*") 或者 getElementByTagName("*)来代替
  不过对于all.length等属性,则完全不兼容。
2. parentElement
  这个也不兼容。比方说, obj.parentElement.name 则应改成 obj.parentNode.attributes.getNamedItem("name").node (不知道如何写得更简洁些)
3. event
  W3C不支持windows.event
  比方说:
    在IE里面
         


       onMenuClick()
      {
        collapseMenu(event.srcElement);
      }
    工作正常。不过在Firefox中,则改成: