`

IE和FF中JS使用的差异

阅读更多

以下以 IE 代替 Internet Explorer,以 MF 代替 Mozilla Firefox

 

1. document.form.item 问题
 1)现有问题:
  现有代码中存在许多 document.formName.item("itemName") 这样的语句,不能在 MF 下运行
 2)解决方法:
  改用 document.formName.elements["elementName"]


2. 集合类对象问题
 1)现有问题:
  现有代码中许多集合类对象取用时使用 (),IE 能接受,MF 不能。
 2)解决方法:
  改用 [] 作为下标运算。如:document.forms("formName") 改为 document.forms["formName"]。
  又如:document.getElementsByName("inputName")(1) 改为 document.getElementsByName("inputName")[1]
 

3. window.event
 1)现有问题:
  使用 window.event 无法在 MF 上运行
 2)解决方法:
  MF 的 event 只能在事件发生的现场使用,此问题暂无法解决。可以这样变通:
  原代码(可在IE中运行):
            <input type="button" name="someButton" value="提交" nclick="javascript.:gotoSubmit()"/>
            ...
            <script. language="javascript">
                function gotoSubmit() {
                    ...
                    alert(window.event);    // use window.event
                    ...
                }
            </script>

        新代码(可在IE和MF中运行):
            <input type="button" name="someButton" value="提交" nclick="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)现有问题
  在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取得该frame,mf中不行
 2)解决方法
  在frame的使用方面mf和ie的最主要的区别是:
如果在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对象

另外,在mf和ie中都可以使用window.top.document.getElementById("frameId")来访问frame标签
并且可以通过window.top.document.getElementById("testFrame").src = 'xx.htm'来切换frame的内容
也都可以通过window.top.frameName.location = 'xx.htm'来切换frame的内容

9. 在mf中,自己定义的属性必须getAttribute()取得


10.在mf中没有  parentElement parement.children  而用
 parentNode parentNode.childNodes
   childNodes的下标的含义在IE和MF中不同,MF使用DOM规范,childNodes中会插入空白文本节点。
  一般可以通过node.getElementsByTagName()来回避这个问题。
   当html中节点缺失时,IE和MF对parentNode的解释不同,例如
   <form>
   <table>
        <input/>
   </table>
   </form>
   MF中input.parentNode的值为form, 而IE中input.parentNode的值为空节点

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

 

11.const 问题
 1)现有问题:
  在 IE 中不能使用 const 关键字。如 const constVar = 32; 在IE中这是语法错误。
 2)解决方法:
  不使用 const ,以 var 代替。

 

12. body 对象
  MF的body在body标签没有被浏览器完全读入之前就存在,而IE则必须在body完全被读入之后才存在。

 

13. url encoding
  在js中如果书写url就直接写&不要写&amp;例如var url = 'xx.jsp?objectName=xx&amp;objectEvent=xxx';
frm.action = url那么很有可能url不会被正常显示以至于参数没有正确的传到服务器
一般会服务器报错参数没有找到
  当然如果是在tpl中例外,因为tpl中符合xml规范,要求&书写为&amp;
一般MF无法识别js中的&amp;


14. nodeName 和 tagName 问题
 1)现有问题:
  在MF中,所有节点均有 nodeName 值,但 textNode 没有 tagName 值。在 IE 中,nodeName 的使用好象
  有问题(具体情况没有测试,但我的IE已经死了好几次)。
 2)解决方法:
  使用 tagName,但应检测其是否为空。

 

15. 元素属性
  IE下 input.type属性为只读,但是MF下可以修改。

分享到:
评论

相关推荐

    JS在IE和FF中的兼容性问题

    JavaScript(简称JS)是一种广泛应用于Web开发的脚本语言,它在不同的浏览器中可能存在兼容性问题,特别是Internet Explorer(IE)和Firefox(FF)之间。这两个浏览器对JS的实现方式有所不同,导致某些特性或功能在...

    IE和FF的部分区别

    这两个浏览器在处理JavaScript和CSS样式时存在诸多差异,这使得代码在不同环境下表现不一致。以下是关于IE和FF部分区别的详细分析: 1. **边界问题**: - 在CSS中,IE将边框宽度计算在元素的总宽度和高度之内,而...

    JavaScript在IE和FF中的区别

    在JavaScript编程中,开发者经常遇到的一个挑战是代码的跨浏览器兼容性,尤其是在处理Internet Explorer (IE) 和 Firefox (FF) 这两种浏览器时。由于它们对JavaScript的实现存在差异,导致一些语句和功能在不同的...

    【速查手册】IE与FF下JS的区别

    - `style`对象:IE和FF对CSS属性的处理方式不同,如`style.pixelLeft`在IE中获取像素值,而在FF中使用`style.left`。 3. BOM(浏览器对象模型)差异: - `window.location.href`:在IE中,可以赋值改变页面URL,...

    IE、FF的JS兼容写法

    在JavaScript编程中,IE(Internet Explorer)和FF(Firefox)是两种主要的浏览器,它们对JS(JavaScript)的实现存在一些差异,导致某些代码在其中一个浏览器中可能无法正常工作。这篇博客文章“IE、FF的JS兼容写法...

    ie6 ie7 ff浏览器兼容

    - **特征检测**:使用JavaScript进行特征检测,根据用户的浏览器类型和版本动态调整页面样式。 #### 总结 在面对浏览器兼容性问题时,开发者需要灵活运用多种技术手段,以确保页面能够在各种浏览器中正常显示。...

    HTML在IE浏览器和FF浏览器中标签的使用

    在网页开发过程中,HTML元素的渲染和交互在不同的浏览器间可能存在差异,尤其是Internet Explorer (IE)和Firefox (FF)之间。这些差异主要源于浏览器对HTML、CSS和JavaScript标准的实现不同。以下是一些常见的问题及...

    ie和ff浏览器的兼容

    在CSS中使用`:hover`伪类时,IE和FF的表现可能会有所不同。为了兼容IE,我们可以采用`:hover`, `:active`, `:link`, `:visited`(即HALV顺序)的方式来定义样式。这样可以确保在IE中也能正确应用:hover的状态。 ###...

    ie和ff兼容性大集合

    - **问题描述**:在 FF 和 IE 中,Box Model 的表现存在差异,特别是在设置外边距(margin)时,可能会出现 2px 的偏差。 - **解决方案**: - 使用 `!important` 关键字来确保在 IE 下的样式优先级,如 `div { ...

    FF和IE的兼容性问题总结

    建议在所有代码中使用`window.location.href`,以确保一致性。 这些兼容性问题的解决方案通常涉及检测浏览器类型或使用条件语句,以确保代码在所有主流浏览器中都能正常工作。在编写跨浏览器的JavaScript时,了解...

    兼容ie和ff的页签

    在本案例中,"兼容ie和ff的页签"指的是一个JavaScript实现的页签功能,能够同时在Internet Explorer(IE)和Firefox(FF)这两个主流浏览器上正常工作。由于这两种浏览器对某些Web标准的实现存在差异,因此创建跨...

    ie和ff对比

    标题中的“ie和ff对比”指的是Internet Explorer(简称IE)与Firefox浏览器之间的比较。这两个都是历史上非常重要的网页浏览器,但它们在技术实现、兼容性、性能以及标准支持方面存在显著差异。 **一、渲染引擎差异...

    兼容IE和FF的网页js日历

    标题中的“兼容IE和FF的网页js日历”指的是一个JavaScript实现的日历插件,它能够同时在Internet Explorer(简称IE)和Firefox这两个不同的浏览器上正常工作。在Web开发中,由于IE和Firefox对某些CSS样式和...

    引用 js在IE与FF之间的区别详细解析

    IE(Internet Explorer)和FF(Firefox)作为曾经的两大主流浏览器,它们之间的JavaScript实现存在不少差异,这些差异常常会给前端开发者带来诸多不便。了解这些差异,并采取相应的兼容性处理策略是前端开发工作中的...

    FF和IE兼容性问题

    FF(Firefox)和IE(Internet Explorer)作为两大主流浏览器,它们对CSS的解析方式存在一定的差异,这使得开发者需要进行额外的工作来确保页面在不同浏览器下展示一致。本文将深入探讨FF和IE之间的CSS兼容性问题,...

    js新闻上下滚动效果(兼容IE和ff)

    在本示例中,"js新闻上下滚动效果(兼容IE和ff)"指的是利用JavaScript实现一个新闻标题在网页上进行上下滚动的效果,这种效果常见于新闻网站,能够展示多条新闻,同时保持页面空间的有效利用。这个效果不仅在现代...

    FF与IE对javascript和CSS的区别

    1. **form元素访问方式**:在IE下,可以使用`document.formName.item("itemName")`或`document.formName.elements["elementName"]`来访问表单元素,而在FF中只能使用`document.formName.elements["elementName"]`。...

    兼容ff和ie的日历控件 js

    Firefox(简称FF)和Internet Explorer(简称IE)是当时市场上的两大主流浏览器,它们对JavaScript和CSS的支持程度不同,导致同一段代码在不同浏览器中的表现可能有显著差异。因此,开发一个既能良好运行于FF又能...

    FF 与 IE 中部分JS、CSS区别

    在Web开发过程中,火狐(Firefox)和Internet Explorer(IE)是两个常见的浏览器,它们对JavaScript(JS)和层叠样式表(CSS)的支持存在一些差异。这些差异往往会导致网页在不同浏览器上显示不一致,因此理解这些...

Global site tag (gtag.js) - Google Analytics