在IE上开发Javascript的典型原因是什么?

Way*_*ett 7 javascript firefox internet-explorer dom

我经常遭受什么在描述相反的问题这篇文章.也就是说,我在专为Internet Explorer设计的遗留应用程序中有代码,我需要让它在Firefox中运行.

例如,我最近开发了一个大量使用手动模拟点击事件的应用程序,如下所示:

select.options[0].click();
Run Code Online (Sandbox Code Playgroud)

...这完全破坏了Firefox中的应用程序.但是你不会在另一个问题的答案中找到这些信息,因为如果你的应用程序首先针对Firefox,那么你甚至不会尝试这些信息.

在迁移到现代浏览器时,开发人员更新旧版IE浏览器应该寻找其他什么?

Way*_*ett 20

这是我以前的研究发现的.我已经看到每个问题都阻止了真实应用程序在Firefox中运行.请随时编辑.


DOM

document.createElement 应该只采用标签名称,但IE允许您传递任意HTML(带属性等)

document.getElementById应该只找到具有给定的元素id,但IE也返回给定的元素name

IE为DOM元素创建隐式全局变量,但在Firefox中以这种方式引用元素会产生以下警告:

"ID/NAME在全局范围内引用的元素.请改用W3C标准document.getElementById()."

IE document.all是文档中所有元素的集合.Firefox不支持它.

使用innerText属性检索IE中的元素文本.Firefox调用此属性textContent.

IE允许使用函数语法(即带括号)而不是正常的数组索引语法(即带括号)来引用集合中的项.例如,以下适用于IE : document.forms(0). Firefox不支持此用法.

HTMLTableElement rows并且cells应该参考HTMLCollections,但IE允许它们被称为函数; Firefox没有.

IE默认insertRowindex为-1; 如果省略参数,则会出现Firefox错误.

Node.text物业仅限IE


活动

window.event是一种特定于IE的访问事件信息的方式; 它不支持Firefox.

事件附加到IE中的Elements使用attachEvent.Firefox使用addEventListener.另请注意,每个浏览器中的事件名称略有不同.

在IE中,可以从非鼠标事件中获取鼠标位置,但它不在其他浏览器中.此外,IE和Firefox中鼠标坐标属性的名称也不相同.

IE支持在HTML元素上click触发onclick事件的方法.Firefox中不存在此类功能.


XML

Firefox将文本节点拆分为4096个字符块; IE没有.这意味着childNodesIE和Firefox 中的情况会有所不同.

Internet Explorer parseError.errorCode在XMLDocuments上定义了一个属性,用于检测解析器错误.Firefox加载一个XML文档,其中包含文档中的错误信息documentElement.nodeName=="parsererror".

IE忽略XML中的空格; firstChild总是返回第一个 ELEMENT_NODE

Node.xml物业仅限IE


进一步阅读