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文档,该文档不应将元素名称强制为大写。