firefox与ie 的javascript区别(2)

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



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。

标签:javascript,firefox,ie,浏览器
0
投稿

猜你喜欢

  • pytorch-gpu安装的经验与教训

    2022-01-11 20:23:36
  • PHP 巧用数组降低程序的时间复杂度

    2023-11-15 09:40:02
  • python内置模块OS 实现SHELL端文件处理器

    2023-11-24 16:41:14
  • jupyter notebook 调用环境中的Keras或者pytorch教程

    2022-10-07 23:23:09
  • python 调用c语言函数的方法

    2023-12-11 17:24:21
  • python多线程高级锁condition简单用法示例

    2023-10-31 16:11:23
  • python3实现163邮箱SMTP发送邮件

    2021-02-28 07:59:19
  • python中pandas对多列进行分组统计的实现

    2022-06-25 03:50:03
  • MySQL5.6安装图解(windows7/8_64位)

    2024-01-12 13:48:00
  • golang跳转语句goto,break,continue的使用及区别说明

    2024-04-23 09:39:56
  • sql如何在Access中选择指定日期前的记录?

    2010-06-17 12:47:00
  • 解决python线程卡死的问题

    2023-08-03 05:58:27
  • Python标准库笔记struct模块的使用

    2024-01-01 14:21:45
  • Python lambda表达式filter、map、reduce函数用法解析

    2022-03-30 03:52:31
  • Python检测端口IP字符串是否合法

    2023-09-03 11:51:26
  • GoLang基础学习之go test测试

    2024-02-06 16:28:19
  • Selenium自动化测试工具使用方法汇总

    2022-02-10 16:26:21
  • CSS Hacks

    2008-07-20 13:04:00
  • 详解Python的Django框架中的模版相关知识

    2023-04-22 02:46:25
  • Python操作word文档的示例详解

    2021-11-10 02:54:51
  • asp之家 网络编程 m.aspxhome.com