`

转转转_IE和FF中JS使用的差异

阅读更多
IE和FF中JS使用的差异
关键字: 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下可以修改。

分享到:
评论

相关推荐

    全面的IE6_7_8_FF样式兼容

    在网页开发过程中,浏览器兼容性始终是一个不可忽视的重要问题,特别是对于旧版本的 Internet Explorer (IE) 和 Firefox (FF)。"全面的IE6_7_8_FF样式兼容"资源正针对这一挑战提供了详尽的解决方案。以下是关于这些...

    FF和IE兼容性问题

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

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

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

    FF与IE对javascript和CSS的区别

    FF(Firefox)与IE(Internet Explorer)是两个不同的网络浏览器,它们在处理JavaScript和CSS时存在一些差异。这些差异可能给开发跨平台的Web应用程序带来挑战。以下是一些主要的区别和解决方案: 1. **访问表单...

    IE与FF兼容在JS方面要注意的一些问题

    IE(Internet Explorer)和FF(Firefox)是两种非常流行的浏览器,它们在JavaScript的支持上存在一些差异,导致开发者在编写JavaScript代码时需要额外注意。这篇博客文章“IE与FF兼容在JS方面要注意的一些问题”很...

    IE和FF的图片上传预览

    本文将详细讲解如何实现IE(Internet Explorer)和FF(Firefox)浏览器的图片上传预览功能,以及处理这两种浏览器在处理文件路径上的差异。 首先,让我们了解一下图片上传预览的基本原理。当用户在网页上选择一个...

    js实现支持IE、FF、Opera、Safia浏览器的xp menu菜单

    本项目旨在实现一个跨浏览器的JavaScript XP风格的菜单,适用于Internet Explorer(IE)、Firefox(FF)、Opera以及Safari这四大主流浏览器。这种菜单能够提供类似Windows XP操作系统的下拉菜单效果,提升用户的浏览...

    上传图片预览-兼容IE6,IE7,IE8,FF

    可能需要使用Base64编码将文件内容转换为可以在`&lt;img&gt;`标签的`src`属性中使用的数据URL。 5. **条件注释和特性检测**:由于不同浏览器的差异,需要使用条件注释(仅IE支持)或特性检测来确定最佳的实现策略。 6. *...

    js兼容IE火狐问题

    由于各个浏览器对JavaScript的支持程度和实现方式有所差异,所以需要采取特定的策略来处理这些差异,以确保代码在Internet Explorer(IE)和Mozilla Firefox(FF)等浏览器上都能正常运行。以下是针对IE和FF兼容性...

    js操作XML文件(兼容FF,IE)

    本文将详细探讨如何在JavaScript中操作XML文件,并确保代码在Firefox和IE之间具有良好的兼容性。 1. **创建XML对象**: 在JavaScript中,可以使用`ActiveXObject`(仅适用于IE)或`DOMParser`(通用方法)来创建...

    IE网页js语法错误2行字符1、FF中正常的解决方法

    首先,我们要明白IE和FF对于JavaScript的解析和执行方式可能存在差异。IE使用的是一种名为JScript的方言,虽然它与JavaScript高度相似,但在某些细节上可能有不同的处理规则。此外,IE的版本差异也会导致问题,特别...

    [php]ifame仿ajax图片上传预览,兼容IE\FF\Chrome

    本项目特别强调了对IE(Internet Explorer)、Firefox(FF)和Chrome的兼容性,这意味着它可能使用了一些特定的代码片段或polyfill来弥补不同浏览器之间的差异。 5. **PHP**:后端语言PHP在这里可能用于接收上传的...

    javascript兼容性解决方法大全

    在IE中,可以用`e.toElement`,在FF中使用`e.relatedTarget`。结合这两种情况,我们可以写成: ```javascript var relatedTarget = e.relatedTarget || e.toElement; ``` 此外,获取元素的坐标位置时,IE提供了`...

    IE和火狐图片兼容

    Internet Explorer(IE)和Firefox(火狐)是两个非常流行的浏览器,它们各自有不同的渲染引擎,这导致了对某些图像格式,如PNG(Portable Network Graphics)的支持存在差异。 PNG是一种无损压缩的图像格式,它...

    IE浏览器与FF浏览器关于Ajax传递参数值为中文时的区别实例分析

    在使用Ajax进行数据传递时,不同的浏览器对于中文字符的处理方式可能会有差异,尤其是IE和Firefox(FF)这两款广泛使用的浏览器。中文字符编码问题主要发生在字符编码不一致的情况下,比如浏览器界面的编码为UTF-8,...

    JS 两日期相减,获得天数的小例子(兼容IE,FF)

    在本篇文章中,作者分享了一个使用JavaScript实现获取两个日期相减得到天数的小例子,并且确保了兼容性在IE和Firefox(FF)浏览器上。这个例子对于前端开发者来说十分实用,特别是在需要处理日期计算和表单验证的...

    jquery获取颜色在ie和ff下的区别示例介绍

    例子中提到,使用$("#id").attr("color")在不同的浏览器(如FF即FireFox,Chrome,IE等)中获取到的颜色值可能存在差异。FireFox和Chrome中获取到的是颜色的名称"green",而IE中获取到的是颜色的十六进制值"#008000...

    Jquery 复选框取值兼容FF和IE8(测试有效)

    需要注意的是,由于涉及到不同浏览器的兼容性问题,例如IE8对JavaScript以及CSS的支持与现代浏览器存在差异,所以即便使用了Jquery库,开发者也需要注意检查代码在不同浏览器环境下的表现是否一致,以及是否有必要...

    textarea 在IE和FF下换行无法正常显示的解决方法

    然而,由于浏览器之间的兼容性问题,特别是在Internet Explorer(IE)和Firefox(FF)之间,`textarea` 的换行处理可能会有所不同,导致显示不一致。这个问题通常出现在用户在`textarea` 中输入文本,然后将这些文本...

    浏览器兼容页面开发注意事项(javascript篇)_101028参考.pdf

    11. `const`问题:旧版浏览器可能不支持`const`关键字,可以改用`let`声明常量,或确保在支持`const`的环境中使用。 12. `body`对象:在IE中,`body`对象可以在`&lt;head&gt;`中访问,其他浏览器则需要等待`...

Global site tag (gtag.js) - Google Analytics