Besser:
document.body.innerHTML = "<p>Test</p>" + document.body.innerHTML;
Wo wir schon bei Performance sind:
Hier wird der gesamte Dokumentkörper serialisiert, dann ein bisschen String drangehangen, dann wieder der gesamte HTML-String geparst und ALLE Elemente ausgewechselt.
Das ist nicht nur bekloppt, weil alle Elemente aus dem Speicher geräumt werden und von neuem angelegt werden, sondern auch unendlich lahm. Dabei dürften alle angelegten DOM-Daten, die sich nicht serialisieren lassen, gelöscht werden (Event-Handler und dergleichen).
Besser wäre:
-
insertAdjacentHTML mit beforeEnd - Microsoft, HTML 5, alle Browser außer Gecko, für Gecko createRange/createContextualFragment/appendChild: http://www.faqts.com/knowledge_base/view.phtml/aid/5756
-
document.createElement("div") plus innerHTML für den neuen Inhalt, dann body.appendChild
-
In dem obigen einfachen Beispiel würde natürlich createElement, createTextnode und 2x appendChild reichen, das wäre noch am schnellsten.
Mathias