Bug 137501 - HTML foster-parenting algorithm no longer requires foster parents to be elements
Summary: HTML foster-parenting algorithm no longer requires foster parents to be elements
Status: NEW
Alias: None
Product: WebKit
Classification: Unclassified
Component: DOM (show other bugs)
Version: 528+ (Nightly build)
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-10-07 15:20 PDT by Adam Klein
Modified: 2014-10-07 15:20 PDT (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Adam Klein 2014-10-07 15:20:01 PDT
Consider the following HTML page:

<body>
  <table>
    <script>
      var fragment = document.createDocumentFragment();
      fragment.appendChild(document.querySelector('table'));
    </script>
    <div></div>
  </table>
</body>

According to the current HTML spec, this should end up foster-parenting the <div> into the document fragment (since it's the <table>'s parent when the foster-parenting algorithm runs). But the spec used to require foster parents to be elements, and so WebKit and Blink put the div, instead, as a child of <body>.

In Blink, I'm about to land https://codereview.chromium.org/640433002, which changes that behavior to match the spec (it was changed to support the <template> element, according to Hixie on #whatwg). It'd be nice to keep us compatible, so if you think this is the wrong way to go, please let me know. Alternatively, it should be easy to update your parser to match the spec (see step 2 of https://html.spec.whatwg.org/#appropriate-place-for-inserting-a-node).