我刚刚发现一些使用.setAttributeNode
的旧javascript代码被破坏了。
Internet Explorer(在IE10中测试)给出错误(未知属性),而FireFox警告它已被弃用。
RienNeVaPlu͢s向我指出文档说DOM Level 4 Core已经删除.setAttributeNode
along with a bunch of other methods。
我尝试搜索MS删除DOM Level 3 Core兼容性的时间和原因的文档。在检查了最新的补丁后,我认为它打破了2015年2月10日发布的MS15-009补丁,但我还没有确认。
任何人都可以确认是否已删除所有deprecated methods或是否只是其中一些?
以下是可能受影响的方法列表:
接口成员:
节点
hasAttributes()
attributes
namespaceURI
prefix
localName
isSupported
getFeature()
getUserData()
setUserData()
isSameNode()
文档
createCDATASection()
createAttribute()
createAttributeNS()
createEntityReference()
inputEncoding
xmlEncoding
xmlStandalone
xmlVersion
strictErrorChecking
domConfig
normalizeDocument()
renameNode()
的DOMImplementation
getFeature()
的Attr
No longer inherits from Node and therefore completely changed.
元素
getAttributeNode()
getAttributeNodeNS()
setAttributeNode()
removeAttributeNode()
schemaTypeInfo
setIdAttribute()
setIdAttributeNS()
setIdAttributeNode()
DocumentType
entities
notations
internalSubset
文本
isElementContentWhitespace
replaceWholeText()
更新
我已经测试了一些,发现旧式事件也不起作用。
更新2:
我已经在IE10和IE11上测试过,行为是一样的,它们似乎都坚持使用DOM Level 4 Core。 您可以通过激活浏览器中的兼容模式(模拟IE7)恢复到较旧的DOM级别,但这也意味着新功能不可用。
答案 0 :(得分:0)
似乎所有主流浏览器都在2015年初切换到W3C DOM 4.
为了兼容,您需要在网站上使用新的DOM结构。
使用Internet Explorer浏览的用户可以使Compatibility Mode
模拟IE7并使用DOM 3(在IE10和IE11上测试)。