Hallo Mathias,
Du suchst
document.implementation.createDocument("http://www.w3.org/1999/xhtml", "html", null)
;)
Das kommt davon, wenn man die obskuren Stellen in den Specs überliest. ;)
Was spricht denn gegen das hier?
doctype = document.implementation.createDocumentType("xhtml",
"-//W3C//DTD XHTML 1.0 Strict//EN",
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd")
HtmlDoc = document.implementation.createDocument("http://www.w3.org/1999/xhtml", "html", doctype);
Gute UAs sollten dann wohl ein HTMLDocument zurück liefern, wenn sie das kennen. Sollten sie zumindest. Hofft man. Zumindest hoffe ich darauf, wenn ich das hier in DOM 3 Core lese:
createDocument introduced in DOM Level 2
Creates a DOM Document object of the specified type with its document element.
Note that based on the DocumentType given to create the document, the
implementation may instantiate specialized Document objects that support
additional features than the "Core", such as "HTML" [DOM Level 2 HTML]. On the
other hand, setting the DocumentType after the document was created makes this
very unlikely to happen. Alternatively, specialized Document creation methods,
such as createHTMLDocument [DOM Level 2 HTML], can be used to obtain specific
types of Document objects.
Ok, ok, may. Und createHTMLDocument muss man sich wohl auch selber basteln, DOM 2 HTML sagt dazu nix.
Das würde nicht gehen, weil dem jungfräulichen Dokument das html-Wurzelelement fehlt und somit documentElement nicht gesetzt wäre.
Wenn es sich um ein HTMLDocument handelt, wäre es irgendwie sehr doof, nicht anzunehmen, dass das Wurzelelement nicht html:html wäre. Aber ich kann eine gewisse Faulheit bei DOM-Implementeuren da verstehen.
Tim