2010-11-18 4 views
8

Ich bin neugierig, ob es eine Möglichkeit gibt, DocType-Knoten über W3C DOM zu erstellen? Die Spezifikation gibt explizit an, dass sie schreibgeschützt sind und nicht bearbeitet werden können, aber können sie erstellt werden?Kann W3C-DOM zum Erstellen von Document/DocType-Knoten verwendet werden?

http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-412266927

Das Document Interface scheint nicht für sie jede create-Methode zu haben:

http://www.w3.org/TR/DOM-Level-3-Core/core.html#i-Document

Vielleicht ist die weitergehende Frage ist: Kann ein ganz neues HTML-Dokument programmgesteuert über DOM erstellt werden? Ich weiß, über document.createDocumentFragment() aber ich meine das Äquivalent eines Root-HTML-Dokument mit spezifischen Doctype usw.


Update: es sieht aus wie kürzlich Gecko und Webkit implementieren DOMImplementation.createDocument und DOMImplementation.createDocumentType aber nicht IE8 oder vor (haven‘ t überprüft IE9). So bin ich leider immer noch dort fest.

Ich bin auch ein wenig unsicher, was ich mit dieser neuen Document-Instanz tun kann, sobald ich es habe. Alle aktuellen DOM-Methoden hängen vom globalen Dokumentobjekt ab, daher scheint es keine Möglichkeit zu geben, sie durch ein neues zu ersetzen.

Antwort

1

Sie benötigen ein DOMImplementation-Objekt. Siehe Abschnitt Bootstrapping.

+0

Ich sehe nicht, wie das meine Frage beantwortet. Das Objekt 'DOMImplementation' scheint Ihnen zu ermöglichen, die unterstützten DOM-Module abzufragen. Kannst du genauer beschreiben, wie man damit neue Instanzen dieser Knoten erstellen kann? – mckamey

+0

DOMImplementation (http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-102161490) verfügt über die Methoden createDocument und createDocumentType. – Alohci

+0

Ah okay, es sieht so aus, als könnten Sie eines dieser Objekte von 'document.implementation' holen. Können Sie das aktuelle Dokument durch ein auf diese Weise erstelltes ersetzen? – mckamey