Bug 137501
| Summary: | HTML foster-parenting algorithm no longer requires foster parents to be elements | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Adam Klein <adamk> |
| Component: | DOM | Assignee: | Ryosuke Niwa <rniwa> |
| Status: | RESOLVED FIXED | ||
| Severity: | Normal | CC: | ahmad.saleem792, ap, bfulgham, rniwa, webkit-bug-importer |
| Priority: | P2 | Keywords: | InRadar |
| Version: | 528+ (Nightly build) | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
Adam Klein
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).
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Ahmad Saleem
Safari pass all WPT tests related to foster parenting:
https://wpt.fyi/results/html/syntax/parsing/template/additions-to-foster-parenting?label=master&label=experimental&aligned&view=subtest&q=foster%20parent
rniwa@webkit.org - Is this still needed? Thanks!
Ryosuke Niwa
Yes, WebKit's behavior matches that of Gecko, and differs from that of Blink. It's probably better to align ourselves with the spec & Blink at this point.
Ryosuke Niwa
Pull request: https://github.com/WebKit/WebKit/pull/3295
EWS
Committed 253504@main (3363325609a1): <https://commits.webkit.org/253504@main>
Reviewed commits have been landed. Closing PR #3295 and removing active labels.
Radar WebKit Bug Importer
<rdar://problem/98764301>