网络编程
位置:首页>> 网络编程>> JavaScript>> firefox与ie 的javascript区别(2)

firefox与ie 的javascript区别(2)

  发布时间:2010-03-14 11:30:00 

标签:javascript,firefox,ie,浏览器


9. 在mf中,自己定义的属性必须getAttribute()取得

10.在mf中没有  parentElement parement.children  而用

               parentNode parentNode.childNodes

   childNodes的下标的含义在IE和MF中不同,MF使用DOM规范,childNodes中会插入空白文本节点。

  一般可以通过node.getElementsByTagName()来回避这个问题。

   当html中节点缺失时,IE和MF对parentNode的解释不同,例如

   《form》

   《table》

        《input/》

   《/table》

   《/form》

   MF中input.parentNode的值为form, 而IE中input.parentNode的值为空节点



  MF中节点没有removeNode方法,必须使用如下方法 node.parentNode.removeChild(node)

11.const 问题

  现有问题:

     在 IE 中不能使用 const 关键字。如 const constVar = 32; 在IE中这是语法错误。

  解决方法:

     不使用 const ,以 var 代替。



12. body 对象

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



13. url encoding

在js中如果书写url就直接写&不要写&例如var url = 'xx.jsp?objectName=xx&objectEvent=xxx';

frm.action = url那么很有可能url不会被正常显示以至于参数没有正确的传到服务器

一般会服务器报错参数没有找到

当然如果是在tpl中例外,因为tpl中符合xml规范,要求&书写为&

一般MF无法识别js中的&

14. nodeName 和 tagName 问题

  现有问题:

     在MF中,所有节点均有 nodeName 值,但 textNode 没有 tagName 值。在 IE 中,nodeName 的使用好象

     有问题(具体情况没有测试,但我的IE已经死了好几次)。

  解决方法:

     使用 tagName,但应检测其是否为空。



15. 元素属性

   IE下 input.type属性为只读,但是MF下可以修改





16. document.getElementsByName() 和 document.all[name] 的问题

  现有问题:

     在 IE 中,getElementsByName()、document.all[name] 均不能用来取得 div 元素(是否还有其它不能取的元素还不知道)。

17. 对象问题

1.1 Form对象

现有问题:

现有代码这获得form对象通过document.forms("formName"),这样使用在IE 能接受,MF 不能。

解决方法:

改用 作为下标运算。改为document.forms["formName"]

备注

上述的改用 作为下标运算中的formName是id而name



1.2 HTML对象

现有问题:

在 IE 中,HTML 对象的 ID 可以作为 document 的下属对象变量名直接使用。在 MF 中不能。

document.all("itemName")或者document.all("itemId")

解决方法:

使用对象ID作为对象变量名

document.getElementById("itemId")

备注

document.all是IE自定义的方法,所以请大家尽量不使用。

还有一种方式,在IE和MF都可以使用

var f = document.forms["formName "];

var o = f. itemId;

1.3 DIV对象

现有问题:

在 IE 中,DIV对象可以使用ID作为对象变量名直接使用。在 MF 中不能。

DivId.style.display = "none"

解决方法:

document.getElementById("DivId").style.display = "none"

备注

获得对象的方法不管是不是DIV对象,都使用getElementById方法。参见1.2





1.4 关于frame

现有问题

在 IE中 可以用window.testFrame取得该frame,mf中不行

解决方法

在frame的使用方面MF和IE的最主要的区别是:

如果在frame标签中书写了以下属性:



那么IE可以通过id或者name访问这个frame对应的window对象

而mf只可以通过name来访问这个frame对应的window对象

例如如果上述frame标签写在最上层的window里面的htm里面,那么可以这样访问

IE: window.top.frameId或者window.top.frameName来访问这个window对象

MF:只能这样window.top.frameName来访问这个window对象

另外,在mf和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打开模态和非模态窗口,但是MF不支持。

解决办法

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

如果需要传递参数,可以使用frame或者iframe。

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com