`

IE和FireFox的 JS兼容区别解决方法

阅读更多

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="java script:gotoSubmit()"/>
            ...
            <script language="java script">
                function gotoSubmit() {
                    ...
                    alert(window.event);    // use window.event
                    ...
                }
            </script>

        新代码(可在IEMF中运行)
            <input type="button" name="someButton" value="
提交" onclick="java script:gotoSubmit(event)"/>
            ...
            <script language="java script">
                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)现有问题
        
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 相同的变量名,以减少错误。
    (3)
其它
        
参见 问题4

7. event.x  event.y 问题
    (1)现有问题
        
IE 中,event 对象有 x, y 属性,MF中没有。
    (2)
解决方法
        
MF中,与event.x 等效的是 event.pageX。但event.pageX IE中没有。
        
故采用 event.clientX 代替 event.x。在IE 中也有这个变量。
        event.clientX 
 event.pageX 有微妙的差别(当整个页面有滚动条的时候),不过大多数时候是等效的。

        
如果要完全一样,可以稍麻烦些:
        mX = event.x ? event.x : event.pageX;
        
然后用 mX 代替 event.x
    (3)
其它
        event.layerX 
 IE  MF 中都有,具体意义有无差别尚未试验。


8. 关于frame
   (1)现有问题
         
 IE 可以用window.testFrame取得该framemf中不行
   (2)
解决方法
         
frame的使用方面mfie的最主要的区别是:
如果在frame标签中书写了以下属性:
<frame src="/xx.htm" id="frameId" name="frameName" />
那么ie可以通过id或者name访问这个frame对应的window对象
mf只可以通过name来访问这个frame对应的window对象
例如如果上述frame标签写在最上层的window里面的htm里面,那么可以这样访问
ie
 window.top.frameId或者window.top.frameName来访问这个window对象
mf
 只能这样window.top.frameName来访问这个window对象

另外,在mfie中都可以使用window.top.document.getElementById("frameId")来访问frame标签
并且可以通过window.top.document.getElementById("testFrame").src = 'xx.htm'来切换frame的内容
也都可以通过window.top.frameName.location = 'xx.htm'来切换frame的内容
关于framewindow的描述可以参见bbs‘windowframe’文章
以及/test/js/test_frame/目录下面的测试
----adun 2004.12.09
修改

9. mf中,自己定义的属性必须getAttribute()取得
10.
mf中没有  parentElement parement.children  而用
               parentNode parentNode.childNodes
   childNodes
的下标的含义在IEMF中不同,MF使用DOM规范,childNodes中会插入空白文本节点。
  
一般可以通过node.getElementsByTagName()来回避这个问题。
   
html中节点缺失时,IEMFparentNode的解释不同,例如
   <form>
   <table>
        <input/>
   </table>
   </form>
   MFinput.parentNode的值为form, IEinput.parentNode的值为空节点

  MF
中节点没有removeNode方法,必须使用如下方法 node.parentNode.removeChild(node)

分享到:
评论

相关推荐

    javascript在IE和Firefox中兼容性问题

    本篇将主要探讨JavaScript在Internet Explorer (IE) 和Firefox之间的兼容性挑战,并通过给出的文件名列表解析这些测试用例所涉及的知识点。 1. **createDocument测试.html** 在IE和Firefox中,创建XML文档的方法...

    JavaScript在IE和Firefox(火狐)的不兼容问题解决

    标题与描述均聚焦于“JavaScript在IE和Firefox(火狐)的不兼容问题解决”,这表明文章旨在探讨并提供解决方案来处理在不同浏览器环境下的JavaScript兼容性问题,尤其是在Internet Explorer(IE)和Mozilla Firefox...

    让IE和火狐同时兼容

    特别是在早期的Web时代,Internet Explorer(简称IE)与Mozilla Firefox(简称火狐)这两款浏览器之间存在着显著的差异,这使得页面设计师不得不花费大量时间去解决它们之间的兼容性问题。本文将详细介绍如何使网站...

    Javascript的IE和Firefox兼容性参考

    以下是一些常见的JavaScript在IE和Firefox中的兼容性问题及解决方案: 1. **document.form.item问题** - 在IE中,可以通过`document.formName.item("itemName")`来访问表单元素,但在Firefox中不支持。推荐使用...

    Javascript的IE和Firefox(火狐)兼容性

    ### Javascript的IE与Firefox(火狐)兼容性解决方案 在Web开发过程中,浏览器兼容性问题一直是开发者们关注的重点之一。由于不同的浏览器对于Web标准的支持程度存在差异,这导致了同样的代码在不同浏览器中的表现...

    IE和Firefox对JavaScript的兼容

    总的来说,理解和处理IE与Firefox之间的JavaScript兼容性问题对于Web开发者至关重要。通过学习“IE火狐的JavaScript兼容.doc”文档,开发者可以更好地理解这些差异,并采取适当的措施确保代码在各种浏览器上的正常...

    js在IE和fireFox的区别

    ### JavaScript在Internet Explorer (IE) 和 Firefox 中的区别与解决方案 #### 一、获取HTML元素的方式差异 1. **通过ID获取元素**: - **IE**:支持`document.getElementById`和`document.all`两种方式。 - ...

    Javascript的IE和Firefox兼容性问题集合

    以下是一些常见的JavaScript在IE和Firefox上的兼容性问题及其解决策略: 1. **事件处理**:IE使用attachEvent方法添加事件监听器,而Firefox则使用addEventListener。为确保兼容,可以创建一个跨浏览器的事件处理...

    ie 和 firefox 的javascript 兼容问题(网上下载的).doc

    ### IE和Firefox的JavaScript兼容性问题详解 #### 1. `document.formName.item("itemName")` 问题 在处理表单元素时,IE 和 Firefox 对 `document.formName.item("itemName")` 的支持存在差异。 **说明:** - **...

    Ie和firefox的Js区别

    JavaScript是一种广泛用于网页开发的脚本语言,它在不同的浏览器中有不同的实现,其中最显著的区别在于Internet Explorer(IE)和Mozilla Firefox(Firefox)。以下是一些关键的区别点: 1. **对象问题** - **...

    Javascript在IE和FireFox中的兼容处理

    然而,由于不同浏览器的实现差异,特别是Internet Explorer(IE)和Firefox,开发者经常面临兼容性问题。以下是一些关键的JavaScript兼容处理策略: 1. **数组、集合类对象的元素访问** - IE支持`for...in`循环...

    JS的IE和Firefox兼容性

    JavaScript在不同浏览器之间的兼容性问题一直是开发者面临的重要挑战,尤其是早期的Internet Explorer(IE)和Mozilla Firefox(MF)之间存在显著差异。以下是一些关键的兼容性问题及其解决方案: 1. **document....

    IE和Firefox对js兼容性处理

    这份文档详细描述了IE和Firefox两大浏览器对js的兼容性处理

    ie firefox 兼容问题大全

    本文将详细总结并分析IE与Firefox在CSS、DOM操作等方面的兼容性问题,并提供相应的解决方案。 #### 二、关键兼容性问题及解决方案 1. **表单元素的访问方式** - **问题描述**:在IE中,可以通过`document.form...

    JS日期选择器(兼容IE,FireFox,Oprea,chrome等主流浏览器)

    "JS日期选择器(兼容IE,FireFox,Oprea,chrome等主流浏览器)"是一个专门为JavaScript环境设计的,旨在解决跨浏览器兼容性问题的日期选择工具。这个组件的目标是确保在不同浏览器如Internet Explorer(IE)、Firefox、...

    ie chrome firefox 兼容

    在上面的代码中,如果用户使用的是 Firefox、Chrome、Opera 或 Safari 浏览器,那么将跳转到指定的 URL 否则,将跳转到另外的 URL。 浏览器兼容性处理是 Web 开发中一个非常重要的问题,因为不同的浏览器可能会有...

    Javascript的IE和Firefox兼容性汇编 .txt

    特别是对于早期版本的Internet Explorer (IE) 和 Firefox (MF),由于它们对JavaScript的支持存在差异,因此开发者需要特别注意以确保网页脚本能够兼容这些浏览器。本文将详细探讨在编写JavaScript时遇到的一些常见...

Global site tag (gtag.js) - Google Analytics