收藏 分享(赏)

火狐兼容js.doc

上传人:gnk289057 文档编号:8753589 上传时间:2019-07-10 格式:DOC 页数:4 大小:29KB
下载 相关 举报
火狐兼容js.doc_第1页
第1页 / 共4页
火狐兼容js.doc_第2页
第2页 / 共4页
火狐兼容js.doc_第3页
第3页 / 共4页
火狐兼容js.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、1. document.form.item 问题(1)现有问题:现有代码中存在许多 document.formName.item(“itemName“) 这样的语句,不能在Firefox(火狐)下运行(2)解决方法:改用 document.formName.elements“elementName“(3)其它参见 22. 集合类对象问题(1)现有问题:现有代码中许多集合类对象取用时使用 (),IE 能接受,Firefox(火狐)不能。(2)解决方法:改用 作为下标运算。如:document.forms(“formName“) 改为 document.forms“formName“。又如:doc

2、ument.getElementsByName(“inputName“)(1) 改为 document.getElementsByName(“inputName“)1(3)其它3. window.event(1)现有问题:使用 window.event 无法在火狐浏览器上运行(2)解决方法:火狐 的 event 只能在事件发生的现场使用,此问题暂无法解决。可以这样变通:原代码(可在 IE中运行): .function gotoSubmit() .alert(window.event); / use window.event. 新代码(可在 IE和火狐中运行): .function gotoSu

3、bmit(evt) evt = evt ? evt : (window.event ? window.event : null);.alert(evt); / use evt. 此外,如果新代码中第一行不改,与老代码一样的话(即 gotoSubmit 调用没有给参数),则仍然只能在 IE中运行,但不会出错。所以,这种方案 tpl 部分仍与老代码兼容。4. HTML 对象的 id 作为对象名的问题(1)现有问题在 IE 中,HTML 对象的 ID 可以作为 document 的下属对象变量名直接使用。在火狐中不能。(2)解决方法用 getElementById(“idName“) 代替 idNa

4、me 作为对象变量使用。5. 用 idName字符串取得对象的问题(1)现有问题在 IE中,利用 eval(idName) 可以取得 id 为 idName 的 HTML 对象,在火狐中不能。(2)解决方法用 getElementById(idName) 代替 eval(idName)。6. 变量名与某 HTML 对象 id 相同的问题(1)现有问题在 火狐 中,因为对象 id 不作为 HTML 对象的名称,所以可以使用与 HTML 对象 id 相同的变量名,IE 中能。(2)解决方法在声明变量时,一律加上 var ,以避免歧义,这样在 IE 中亦可正常运行。此外,最好不要取与 HTML 对象

5、 id 相同的变量名,以减少错误。(3)其它参见 问题 47. event.x 与 event.y 问题(1)现有问题在 IE 中,event 对象有 x, y 属性,火狐中没有。(2)解决方法在火狐中,与 event.x 等效的是 event.pageX。但 event.pageX IE中没有。故采用 event.clientX 代替 event.x。在 IE 中也有这个变量。event.clientX 与 event.pageX 有微妙的差别(当整个页面有滚动条的时候) ,不过大多数时候是等效的。如果要完全一样,可以稍麻烦些:mX = event.x ? event.x : event.p

6、ageX;然后用 mX 代替 event.x(3)其它event.layerX 在 IE与火狐中都有,具体意义有无差别尚未试验。8. 关于 frame(1)现有问题在 IE 中 可以用 window.testFrame取得该 frame,火狐中不行(2)解决方法在 frame的使用方面火狐和 ie的最主要的区别是:如果在 frame标签中书写了以下属性:那么 ie可以通过 id或者 name访问这个 frame对应的 window对象而火狐只可以通过 name来访问这个 frame对应的 window对象例如如果上述 frame标签写在最上层的 window里面的 htm里面,那么可以这样访问

7、ie: window.top.frameId 或者 window.top.frameName来访问这个 window对象火狐: 只能这样 window.top.frameName来访问这个 window对象另外,在火狐和 ie中都可以使用 window.top.document.getElementById(“frameId“)来访问 frame标签并且可以通过 window.top.document.getElementById(“testFrame“).src = xx.htm来切换 frame的内容也都可以通过 window.top.frameName.location = xx.htm

8、来切换 frame的内容关于 frame和 window的描述可以参见 bbs的window 与 frame文章以及/test/js/test_frame/目录下面的测试-adun 2004.12.09修改9. 在火狐中,自己定义的属性必须 getAttribute()取得10.在火狐中没有 parentElement parement.children 而用parentNode parentNode.childNodeschildNodes的下标的含义在 IE和火狐中不同,火狐使用 DOM规范,childNodes 中会插入空白文本节点。一般可以通过 node.getElementsByTa

9、gName()来回避这个问题。当 html中节点缺失时,IE 和火狐对 parentNode的解释不同,例如火狐中 input.parentNode的值为 form, 而 IE中 input.parentNode的值为空节点火狐中节点没有 removeNode方法,必须使用如下方法 node.parentNode.removeChild(node)11.const 问题(1)现有问题:在 IE 中不能使用 const 关键字。如 const constVar = 32; 在 IE中这是语法错误。(2)解决方法:不使用 const ,以 var 代替。12. body 对象火狐的 body在 b

10、ody标签没有被浏览器完全读入之前就存在,而 IE则必须在 body完全被读入之后才存在13. url encoding在 js中如果书写 url就直接写frm.action = url那么很有可能 url不会被正常显示以至于参数没有正确的传到服务器一般会服务器报错参数没有找到当然如果是在 tpl中例外,因为 tpl中符合 xml规范,要求&书写为&一般火狐无法识别 js中的&14. nodeName 和 tagName 问题(1)现有问题:在火狐中,所有节点均有 nodeName 值,但 textNode 没有 tagName 值。在 IE 中,nodeName 的使用好象有问题(具体情况没有测试,但我的 IE已经死了好几次) 。(2)解决方法:使用 tagName,但应检测其是否为空。15. 元素属性IE下 input.type 属性为只读,但是火狐下可以修改16. document.getElementsByName() 和 document.allname 的问题(1)现有问题:在 IE 中,getElementsByName()、document.allname 均不能用来取得 div 元素(是否还有其它不能取的元素还不知道) 。个人总结:17.IE下 a可以用 innerText,FF 要用 textContent

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报