例如,我最近开发了一个大量使用手动模拟点击事件的应用程序,如下所示:
select.options[0].click();
…这完全破坏了Firefox中的应用程序.但是你不会在另一个问题的答案中找到这些信息,因为如果你的应用首先针对Firefox,那么你甚至不会尝试这些信息.
在迁移到现代浏览器时,开发人员应该更新旧版IE浏览器应该查找哪些其他内容?
解决方法
DOM
document.createElement应该只使用标记名称,但IE允许您
传递任意HTML(带属性等)
> http://msdn.microsoft.com/en-us/library/ms536389(VS.85).aspx
document.getElementById应该只找到具有给定id的元素,
但IE也返回给定名称的元素
> http://msdn.microsoft.com/en-us/library/ms536437(VS.85).aspx
IE为DOM元素创建隐式全局变量,但在Firefox中以这种方式引用元素会产生以下警告:
“Element referenced by ID/NAME in the
global scope. Use W3C standard
document.getElementById() instead.”
> http://www.west-wind.com/weblog/posts/677442.aspx
> http://code.google.com/p/fbug/issues/detail?id=853
IE的document.all是文档中所有元素的集合. Firefox不支持它.
> http://msdn.microsoft.com/en-us/library/ms537434(v=vs.85).aspx
使用innerText属性检索IE中的Element文本. Firefox将此属性称为textContent.
> http://msdn.microsoft.com/en-us/library/ms533899(v=vs.85).aspx
IE允许使用函数语法(即带括号)而不是正常的数组索引语法(即带括号)来引用集合中的项.例如,以下适用于IE:document.forms(0). Firefox不支持此用法.
> http://msdn.microsoft.com/en-us/library/ms537457(v=VS.85).aspx
HTMLTableElement行和单元格应该引用HTMLCollections,但是
IE允许它们被称为函数; Firefox没有.
> http://msdn.microsoft.com/en-us/library/ms537484%28VS.85%29.aspx
IE默认insertRow的索引为-1;如果省略参数,则会出现Firefox错误.
> http://msdn.microsoft.com/en-us/library/ms536457%28VS.85%29.aspx
> https://developer.mozilla.org/en/DOM/table.insertRow
Node.text属性仅限IE
> http://msdn.microsoft.com/en-us/library/ms534677%28VS.85%29.aspx
> @L_502_12@
活动
window.event是一种访问事件信息的IE特定方式;不是
Firefox支持.
> http://msdn.microsoft.com/en-us/library/ms535863(v=vs.85).aspx
> http://www.quirksmode.org/js/events_access.html#link3
事件使用attachEvent附加到IE中的Elements. Firefox使用addEventListener.另请注意,每个浏览器中的事件名称略有不同.
> http://msdn.microsoft.com/en-us/library/ms536343(v=vs.85).aspx
在IE中,可以从非鼠标事件中获取鼠标位置,但它不在其他浏览器中.此外,IE和Firefox中鼠标坐标属性的名称也不相同.
> http://msdn.microsoft.com/en-us/library/ms533567(v=vs.85).aspx
> http://msdn.microsoft.com/en-us/library/ms533568(v=vs.85).aspx
> http://www.quirksmode.org/js/events_properties.html#position
IE支持单击方法,用于触发HTML元素上的onclick事件. Firefox中不存在此类功能.
> http://msdn.microsoft.com/en-us/library/ms536363(v=vs.85).aspx
> http://lifescaler.com/2008/04/simulating-mouse-clicks-in-javascript/
> http://www.devtoolshed.com/content/fix-firefox-click-event-issue
XML
Firefox将文本节点拆分为4096个字符块; IE没有.这个
意味着在IE和Firefox中,像childNodes这样的东西会有所不同.
> Is there a 4096 character limit for JavaScript XML text nodes?
Internet Explorer定义了一个parseError.errorCode属性
用于检测解析器错误的XMLDocuments. Firefox使用documentElement.nodeName ==“parsererror”加载包含文档中错误信息的XML文档.
IE忽略XML中的空格; firstChild总是返回第一个
ELEMENT_NODE
> http://www.w3schools.com/dom/prop_element_firstchild.asp
> https://developer.mozilla.org/en/Whitespace_in_the_DOM
Node.xml属性仅限IE
> http://www.w3schools.com/dom/prop_node_xml.asp
> http://www.grange.com.br/dicas-tecnicas/40-lotus/345-dom-xml-wrapper-for-javascript
进一步阅读
> http://www.reloco.com.ar/mozilla/compat.html
> https://developer.mozilla.org/en/migrate_apps_from_internet_explorer_to_mozilla
> http://www.impressivewebs.com/7-javascript-differences-between-firefox-ie/