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>
把遇到的情况放在这里,以后遇到类似情况的解决办法接着往下写。
以下以 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>
相关文章推荐
- firefox与IE对javascript和CSS的区别(转)
- IE与firefox在Javascript上的区别
- firefox与ie的javascript区别
- firefox与ie 的javascript区别
- FireFox和IE的JavaScript方法的区别
- firefox与ie 的javascript区别 (2012-02-03 11:12)
- Javascript与CSS在IE和Firefox中的误区及区别
- Javascript与CSS在IE和Firefox中的误区及区别
- firefox与IE对javascript和CSS的区别
- javascript在中ie与firefox的区别与解决方案
- Javascript与CSS在IE和Firefox中的误区及区别
- firefox与IE对javascript和CSS的区别
- CSS、Javascript在IE和Firefox中的区别
- 关于IE和Firefox中javascript和css的一些区别
- Javascript中IE和Firefox的区别
- IE && FireFox在javascript上的区别
- Javascript与CSS在IE和Firefox中的误区及区别
- IE和Firefox中Javascript和CSS的区别(轉:http://blog.csdn.net/superbeck/archive/2008/10/16/3082550.aspx)
- Firefox与IE中javascript的区别
- Javascript在IE和Firefox中的误区及区别