3

ChromeとFirefoxはdocument.implementation.createDocument()のようです。IE9はそうではなく、namespaceURIとドキュメント要素名が提供されていることを要求します。これは、document.implementation.createDocument(' http://www.w3.org/1999/xhtml'、'html'、null )のようなものを呼び出すことを意味しますが、これには、を使用しないhtmlドキュメントを生成するという奇妙な効果があります。公式のHTML要素nodeNameの場合。これはすべて大文字であると想定されており、IE9の通常のdocument.createElement( "a")。nodeNameは"A"を返します。document.impl ... versionを使用すると、[...]。createElement( "a")。nodeNameは"a"を返します。

正しいケースルールを持つドキュメントに影響を与える引数の魔法の組み合わせはどれですか?

(質問の理由:DOMフラグメントをテストする100万のQUnitテストは大文字のノード名を予期し、このウィンドウ化されていない要素ファクトリを使用してあらゆる場所でエラーをスローします。これらのテストはすべて手動で修正して大文字と小文字を無視できますが、方法がある場合IEを動作させるために、小文字の要素名を装うのではなく、大丈夫です-仕様によれば、そうではありません-手動で修正する前にそれを取ります)。

4

1 に答える 1

1

代わりに、次のようにcreateHTMLDocumentメソッドを使用する必要があります。

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

(ほぼDOM4仕様に準拠しています)。

createDocumentは、その仕様に従って、要素名を大文字に強制してはならないXMLドキュメントを作成します。

于 2013-03-02T17:46:40.430 に答える