- From: Trevor Rowbotham <notifications@github.com>
- Date: Mon, 26 Oct 2020 13:56:51 -0700
- To: whatwg/dom <dom@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <whatwg/dom/issues/907@github.com>
The following is a reduced example from the [wpt](https://github.com/web-platform-tests/wpt/blob/master/dom/traversal/NodeIterator-removal.html), where "paras[0]" is the node being removed and "paras[0].firstChild" is the node used to create the NodeIterator. ```js const div = document.createElement('div'); const p = document.createElement('p'); const t = p.appendChild(document.createTextNode('Hello')); div.appendChild(p); const iter = document.createNodeIterator(t); div.removeChild(p); ``` The html structure is: ```html <div> <p>Hello</p> </div> ``` The NodeIterator's pre-removing steps: 1. The node being removed (`p`) is an inclusive ancestor of node iterator's reference (`t`), so this passes. 2. The node iterator's `pointer before reference` starts out as `true`, so this passes. 1. There is no following node that is an inclusive descendant of node iterator's `root` (`t`) that is also not an inclusive descendant of the node being removed (`p`), which means next is null. 2. Next is null, so we move to the next step. 3. **Because next is null, node iterator's `pointer before reference` gets set to false.** 3. **The node being removed (`p`) has no previous sibling, so node iterator's `reference` gets set to the removed node's (`p`) parent, which is `div`.** Following the spec, the NodeIterator gets changed to the following: ```js NodeIterator { root: t, referenceNode: div, pointerBeforeReferenceNode: false } ``` Browsers, however, seem to leave the NodeIterator unchanged, which matches the test expectations: ```js NodeIterator { root: t, referenceNode: t, pointerBeforeReferenceNode: true } ``` -- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/whatwg/dom/issues/907
Received on Monday, 26 October 2020 20:57:04 UTC