#HTMLQuiz what happens?
<iframe id=x></iframe> <script> x.contentDocument.body.appendChild(x); </script>
- wild DOMException appears
- iframe escapes
(The question was about what happens per spec, not what happens in some particular browser engine.)
Correct answer: iframe escapes.
Nothing prevents the iframe element from being moved to its own document (about:blank is same-origin). So the iframe element is removed from its original document.
When an iframe is removed from a document, its browsing context disappears. So the child document does not have a browsing context when the iframe element is inserted into it. Therefore the iframe, after the move, does not have a new child browsing context (there's no infinite recursion happening).
When an iframe element is inserted into a document that has a browsing context, the user agent must create a new browsing context, set the element's nested browsing context to the newly-created browsing context, and then process the iframe attributes for the "first time".
When an iframe element is removed from a document, the user agent must discard the element's nested browsing context, if it is not null, and then set the element's nested browsing context to null.
If the script had saved a reference to the iframe's window, the script would still be able to access it, its document, and the moved iframe element, after the move.