IE和document.implementation.createDocument() -哪些参数影响正确的html节点

IE and document.implementation.createDocument() - which arguments effect correct html nodename case?

本文关键字:影响 参数 节点 html implementation document createDocument IE      更新时间:2023-09-26

Chrome和Firefox喜欢document.implementation.createDocument()。IE9没有,它要求提供名称空间euri和文档元素名称。这意味着调用document.implementation. createdocument ('http://www.w3.org/1999/xhtml','html',null)之类的东西,但这会产生奇怪的效果,即生成不使用官方html元素nodeName case的html文档。它应该是全大写的,并且是一个普通的document.createElement("a")。IE9中的nodeName将返回"A"。使用document.impl…版本,[…].createElement("a")。nodeName返回"a"

哪个神奇的参数组合将影响具有正确大小写规则的文档?

(问题的原因:一百万个测试DOM片段的QUnit测试期望使用大写的节点名,并且会在使用这个非窗口元素工厂时到处抛出错误。这些测试都可以手动修复以忽略大小写,但如果有一种方法可以使IE正常工作,而不是假装小写元素名称是可以的(根据规范,它们不是),我会在进行手动修复之前接受这个

您需要使用createHTMLDocument方法,如下所示:

document.implementation.createHTMLDocument("").createElement("a").nodeName

(几乎符合DOM4规范)。

根据该规范,

createDocument创建了一个XML文档,该文档不应该强制元素名称为大写。