36 lines
1.5 KiB
HTML
36 lines
1.5 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head></head> <!-- This element isn't necessary, but makes it straightforward to reason about the test when debugging it. -->
|
|
<body id="declarativeBody"></body>
|
|
<!-- Notice a <script> is only executed once. -->
|
|
<script>
|
|
if (window.testRunner) {
|
|
testRunner.dumpAsText();
|
|
testRunner.waitUntilDone();
|
|
}
|
|
|
|
var savedDocumentElement;
|
|
function appendBodyElementToSavedDocument()
|
|
{
|
|
document.removeEventListener("DOMNodeRemoved", appendBodyElementToSavedDocument, false);
|
|
savedDocumentElement.appendChild(document.createElement("body")).id = "programmaticBody";
|
|
}
|
|
|
|
function insertSavedDocument()
|
|
{
|
|
document.appendChild(savedDocumentElement); // Will execute <script id="script2">.
|
|
}
|
|
|
|
savedDocumentElement = document.documentElement;
|
|
document.addEventListener("DOMNodeRemoved", appendBodyElementToSavedDocument, false);
|
|
document.removeChild(savedDocumentElement); // Prevents <script id="script2"> from running since it won't be in the document when we fall off the end of this <script>.
|
|
window.setTimeout(insertSavedDocument, 0);
|
|
</script>
|
|
<!-- This must be in its own <script> so that we execute it (for the first time) when we re-insert it into the document in insertSavedDocument(). -->
|
|
<script id="script2">
|
|
document.write("PASS, removed element, with HTML attribute id, which was inserted on event DOMNodeRemoved."); // Destroys the entire document, including <body id="declarativeBody"> and <body id="programmaticBody">.
|
|
if (window.testRunner)
|
|
testRunner.notifyDone();
|
|
</script>
|
|
</html>
|