我常常遇到与this post中描述的问题相反的问题。也就是说,我在专为Internet Explorer设计的遗留应用程序中有代码,我需要让它在Firefox中运行。
例如,我最近开发了一款大量使用手动模拟点击事件的应用,如下所示:
select.options[0].click();
...这完全破坏了Firefox中的应用程序。但是你不会在另一个问题的答案中找到这些信息,因为如果你的应用首次针对Firefox,那么你甚至都不会尝试这些信息。
开发人员在迁移到现代浏览器时,还应该更新旧版仅限IE应用程序的其他内容吗?
答案 0 :(得分:20)
这是我之前的研究发现的内容。我已经看到每个问题都阻止了真实应用程序在Firefox中运行。请随时编辑。
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
。
document.forms(0)
。 Firefox不支持此用法。
HTMLTableElement
rows
和cells
应该引用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中没有这样的功能。
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)
你应该注意到微软在创建自己的所有版本时都存在问题,并在自己命名之后。