Chrome 和 Firefox 喜欢 document.implementation.createDocument()。 IE9 没有,它要求提供 namespaceURI 和文档元素名称。这意味着调用类似 document.implementation.createDocument(' http://www.w3.org/1999/xhtml ','html',null) 的方法,但这会生成一个不使用官方 HTML 元素 nodeName 大小写的 html 文档的奇怪效果。它应该是全大写的,IE9 中的普通 document.createElement("a").nodeName 将返回“A”。使用 document.impl... 版本,[...].createElement("a").nodeName 返回“a”。
哪种参数的神奇组合会影响具有正确大小写规则的文档?
(问题原因:一百万个测试 DOM 片段的 QUnit 测试期望大写节点名称,并且会在这个非窗口元素工厂的所有地方抛出错误。这些测试都可以手动修复以忽略大小写,但是如果有一种方法可以让 IE 正常运行,而不是假装小写元素名称是可以的 - 根据规范,它们不是 - 我会在进行手动修复之前采用它)。
最佳答案
您需要改用 createHTMLDocument 方法,如下所示:
document.implementation.createHTMLDocument("").createElement("a").nodeName
(几乎与 DOM4 spec 保持一致)。
根据该规范,createDocument 创建一个 XML 文档,它不应将元素名称强制为大写。
关于javascript - IE 和 document.implementation.createDocument() - 哪些参数影响正确的 html nodename 大小写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15165016/