• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
目标驱动者
目标........努力........生活.........
博客园    首页    新随笔    联系   管理    订阅  订阅

javascript在IE和Firefox中的区别

javascript在IE与firefox中的

最近修改以前的一个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>

posted @ 2008-11-19 19:41  IsionWu  阅读(285)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3