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

时间:2011-03-05 23:20:45

标签: javascript internet-explorer firefox dom

我常常遇到与this post中描述的问题相反的问题。也就是说,我在专为Internet Explorer设计的遗留应用程序中有代码,我需要让它在Firefox中运行。

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

select.options[0].click();

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

开发人员在迁移到现代浏览器时,还应该更新旧版仅限IE应用程序的其他内容吗?

2 个答案:

答案 0 :(得分: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 rowscells应该引用HTMLCollections,但是 IE允许它们被称为函数; Firefox没有。

IE默认insertRow的{​​{1}}为-1;如果省略参数,则会出现Firefox错误。

index属性仅限IE


活动

Node.text是一种特定于IE的访问事件信息的方式;不是 Firefox支持。

使用window.event将事件附加到IE中的元素。 Firefox使用attachEvent。另请注意,每个浏览器中的事件名称略有不同。

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

IE支持addEventListener方法来触发HTML元素上的click事件。 Firefox中没有这样的功能。


XML

Firefox将文本节点拆分为4096个字符块; IE没有。这个 意味着像onclick这样的东西在IE和Firefox中会有所不同。

Internet Explorer定义了childNodes属性 用于检测解析器错误的XMLDocuments。 Firefox使用parseError.errorCode加载包含文档中错误信息的XML文档。

IE忽略XML中的空格; documentElement.nodeName=="parsererror"始终返回第一个 firstChild

ELEMENT_NODE属性仅限IE


进一步阅读

答案 1 :(得分:1)

你应该注意到微软在创建自己的所有版本时都存在问题,并在自己命名之后。