JS:firefox 兼容性问题
时间:2009-08-01 16:20:00
JS在firefox中的兼容性问题,自己也经常遇到.此文是网上资料,不过时间较久不记得原址了...
1. document.form.item 问题
(1)现有问题:现有代码中存在许多 document.formName.item("itemName") 这样的语句,不能在 FF下运行
(2)解决方法:改用 document.formName.elements["elementName"]
(3)其它:参见 2
2. 集合类对象问题
(1)现有问题:现有代码中许多集合类对象取用时使用 (),IE 能接受,FF不能。
(2)解决方法:改用 [] 作为下标运算。
如:document.forms("formName") 改为 document.forms["formName"]。
又如:document.getElementsByName("inputName")(1) 改为 document.getElementsByName("inputName")[1]
(3)其它
3. window.event
(1)现有问题:使用 window.event 无法在 FF上运行
(2)解决方法:FF的 event 只能在事件发生的现场使用,此问题暂无法解决。可以这样变通:
原代码(可在IE中运行):
<input type="button" value="提交" />
...
<script language="javascript">
function gotoSubmit() {
...
alert(window.event); // use window.event
...
}
</script>
新代码(可在IE和FF中运行):
<input type="button" value="提交" />
...
<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 的下属对象变量名直接使用。在 FF中不能。
(2)解决方法:用 getElementById("idName") 代替 idName 作为对象变量使用。
5. 用idName字符串取得对象的问题
(1)现有问题:在IE中,利用 eval(idName) 可以取得 id 为 idName 的 HTML 对象,在FF中不能。
(2)解决方法:用 getElementById(idName) 代替 eval(idName)。
6. 变量名与某 HTML 对象 id 相同的问题
(1)现有问题:在 FF中,因为对象 id 不作为 HTML 对象的名称,所以可以使用与 HTML 对象 id 相同的变量名,IE 中不能。
(2)解决方法:在声明变量时,一律加上 var ,以避免歧义,这样在 IE 中亦可正常运行。
此外,最好不要取与 HTML 对象 id 相同的变量名,以减少错误。
(3)其它:参见 问题4


猜你喜欢
mysql5.x升级到mysql5.7后导入之前数据库date出错的快速解决方法
PyQT5 QTableView显示绑定数据的实例详解

IE事件对象(The Internet Explorer Event Object)
国产化设备鲲鹏CentOS7上源码安装Python3.7的过程详解
在Python中使用SQLite的简单教程
python实现简单的学生管理系统

pandas归一化与反归一化操作实现

windows、linux下打包Python3程序详细方法

跟老齐学Python之数据类型总结
Python OpenCV实现基本图形绘制

推荐20家国外的脚本下载网站

sql语句之数据操作介绍
python频繁写入文件时提速的方法
谈谈为什么你的 JavaScript 代码如此冗长
pywinauto自动化测试使用经验
Golang最大递减数算法问题分析
Python concurrent.futures模块使用实例
Qt Quick QML-500行代码实现合成大西瓜游戏

网页优化之加速图片显示(CSS Sprite)
