您的位置:首页 > Web前端 > JavaScript

javascript在IE和Firefox中的区别

2008-11-19 19:41 246 查看
最近修改以前的一个ASP页面,很多用户用FIREFOX可以跳过客户端的限制而成功提交表单,在网上摘抄的一些内容,解决了javascript在两个浏览器中应用的统一。

把遇到的情况放在这里,以后遇到类似情况的解决办法接着往下写。

以下以 ie 代替 internet explorer,以 mf 代替 mozzila firefox

1. document.form.item 问题

(1)现有问题:

现有代码中存在许多 document.formname.item("itemname") 这样的语句,不能在 mf 下运行

(2)解决方法:

改用 document.formname.elements["elementname"]

(3)其它

参见 2

2. 集合类对象问题

(1)现有问题:

现有代码中许多集合类对象取用时使用 (),ie 能接受,mf 不能。

(2)解决方法:

改用 [] 作为下标运算。如:document.forms("formname") 改为 document.forms["formname"]。

又如:document.getElementsByName("inputname")(1) 改为 document.getElementsByName("inputname")[1]

(3)其它

3. window.event

(1)现有问题:

使用 window.event 无法在 mf 上运行

(2)解决方法:

mf 的 event 只能在事件发生的现场使用,此问题暂无法解决。可以这样变通:

原代码(可在ie中运行):

<input type="button" name="somebutton" value="提交" onclick="javascript:gotosubmit()"/>

...

<script language="javascript">

function gotosubmit() {

...

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

...

}

</script>

新代码(可在ie和mf中运行):

<input type="button" name="somebutton" value="提交" onclick="javascript:gotosubmit(event)"/>

...

<script language="javascript">

function gotosubmit(evt) {

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

...

alert(evt); // use evt

...

}

</script>

此外,如果新代码中第一行不改,与老代码一样的话(即 gotosubmit 调用没有给参数),则仍然只能在ie中运行,但不会出错。所以,这种方案 tpl 部分仍与老代码兼容。

4. html 对象的 id 作为对象名的问题

(1)现有问题

在 ie 中,html 对象的 id 可以作为 document 的下属对象变量名直接使用。在 mf 中不能。

(2)解决方法

用 getElementById("idname") 代替 idname 作为对象变量使用。

5. 用idname字符串取得对象的问题

(1)现有问题 eval是可以使用的!eval(xxx+"ddd")

在ie中,利用 eval(idname) 可以取得 id 为 idname 的 html 对象,在mf 中不能。

(2)解决方法

用 getElementById(idname) 代替 eval(idname)。

6. 变量名与某 html 对象 id 相同的问题

(1)现有问题

在 mf 中,因为对象 id 不作为 html 对象的名称,所以可以使用与 html 对象 id 相同的变量名,ie 中不能。

(2)解决方法

在声明变量时,一律加上 var ,以避免歧义,这样在 ie 中亦可正常运行。

此外,最好不要取与 html 对象 id 相同的变量名,以减少错误。

7. 关于innerHTML

<div id="a"></div>

<script type="text/jscript">

a.innerHTML="<ul><li>dfgddgdg</li></ul>";

</script>

在IE中有效,在FireFox下是无效的,我在开发BLOG日历的时候,发现了这个问题,尝试了一下发现用标准的写法能解决问题,如下:

<script type="text/jscript">

document.getElementById("a").innerHTML="<ul><li>dfgddgdg</li></ul>";

</script>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: