- From: triple-underscore <notifications@github.com>
- Date: Mon, 19 Mar 2018 21:28:49 +0000 (UTC)
- To: whatwg/dom <dom@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <whatwg/dom/issues/87/374385254@github.com>
>do you have a test for that?
Consider the following DOM and script:
```
<div id="root"><div id="n1"><div id="n2"><div id="n3"></div></div></div></div>
<script>
const walker = document.createTreeWalker(
document.getElementById('root'),
NodeFilter.SHOW_ELEMENT,
(e) => {
return e.id === 'n2' ?
NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT;
}
);
let node;
while(node = walker.nextNode()){
console.log(node.id);
}
</script>
```
Tracing the [TreeWalker.nextNode()](https://dom.spec.whatwg.org/#dom-treewalker-nextnode) method in the current spec, the above nextNode() would return
n1, *then node n3*; but UAs return only n1 (tested in FireFox, Chrome).
- The 1st call of nextNode():
(currentNode is 'root'.)
1. In the loop 3.1:
Returns node n1, with filtering result FILTER_ACCEPT.
(currentNode becomes n1.)
- The 2nd call of nextNode():
1. In the loop 3.1:
Breaks at the node n2, with filtering result FILTER_REJECT.
The node variable is set to node n2.
1. step 3.2:
node variable is set to n2's first chlid, which is the node n3.
(This does not seem to match the actual behavior.)
1. step 3.3, 3.4:
The result of filtering n3 is FILTER_ACCEPT, and returns n3.
I think the step 3.2 is also contrary to the semantics of FILTER_REJECT, “reject all inclisive descemdants”.
--
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/87#issuecomment-374385254
Received on Monday, 19 March 2018 21:29:15 UTC