2009-08-30 10 views
9

Heute bin ich über createDocumentFragment gestolpert. Ich habe mich gefragt, ob das DocumementFragment unterstützt wird, und wie, auf den verschiedenen Browsern, insbesondere IE-Serie.DocumentFragment Browser-Unterstützung

Wer weiß etwas über dieses Thema?

+1

http://stackoverflow.com/questions/1643349/is-there-any-way-to-find-an-element-in-a-documentfragment/1643383#1643383 Siehe NickFitz Kommentar. Fragmente werden vom IE als Dokumente behandelt. http://msdn.microsoft.com/en-us/library/ms536387%28VS.85%29.aspx – Olivvv

Antwort

13

Ja, es wird vollständig in allen modernen Browsern (einschließlich IE6) unterstützt.

See: http://www.quirksmode.org/dom/w3c_core.html#miscellaneous

+1

Obwohl documentFragment von allen Browsern unterstützt wird, sind die DOM-Traversal-Methoden wie 'getElementsByTagName',' children' usw. arbeite nicht an ihnen. –

4

Im allgemeinen hat es immer gemäß der DOM-Spezifikation fein gearbeitet.

Aber erwarten Sie nicht, dass nicht-standardmäßige Erweiterungen nahtlos funktionieren ... zum Beispiel können Sie innerHTML nicht auf ein DocumentFragment setzen (was schade ist, da es die Einfügegeschwindigkeit auf einigen großen Seiten erheblich verbessert hätte).

+1

aber Sie können eine Halterung 'div' mit' document.createElement' erstellen und die Zeichenfolge als 'innerHTML' zum' div' hinzufügen, und schließlich das 'div' an das' documentFragment' anhängen. –

+0

Ja, aber das gibt keine Leistungsvorteil gegenüber dem direkten Betrieb am "div". Die Idee wäre, Operationen wie das Hinzufügen vieler Zeilen zu einer Tabelle zu beschleunigen, die bei Knoten-für-Knoten-DOM-Methoden normalerweise langsam sind. Sie können eine Menge davon tun, indem Sie Fragmente mit 'Range'-Objekten kombinieren, außer dass Browser-Implementierungen von DOM Level 2 TR (insbesondere IEs) noch nicht vollständig vorhanden sind. – bobince

4
  ╔═════════════════════════════════╗ 
     ║ document.createDocumentFragment ║ 
╔════════╬═════════════════════════════════╣ 
║ IE5 ║ true       ║ 
║ IEM5.2 ║ true       ║ 
║ IE5.5 ║ false       ║ 
║ IE6+ ║ true       ║ 
║ OPM6+ ║ true       ║ 
║ OP7+ ║ true       ║ 
║ N6+ ║ true       ║ 
║ KQ  ║ true       ║ 
╚════════╩═════════════════════════════════╝ 

Beachten Sie jedoch, Existenz immer Umsetzung nicht zur Folge hat.

Gotchas

  • IE Mac 5.2 auf Mac kann nicht Textknoten hinzufügen Fragmente zu dokumentieren, noch hängen Sie den Inhalt des Fragments zu einem Dokument.
  • Opera 7.2 erstellt das Fragment, wendet aber keine Stile auf die erstellten Elemente an.
Verwandte Themen