- From: Di Zhang <notifications@github.com>
- Date: Thu, 21 Nov 2024 09:46:33 -0800
- To: whatwg/dom <dom@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <whatwg/dom/issues/772/2491887033@github.com>
Letting a Range object update a Selection becomes trickier when crossing shadow trees. Here is an example:
```HTML
<html>
<body>
<div id="light">Start outside shadow DOM</div>
<div id="outerHost">outerHost
<template shadowrootmode="open">
<slot></slot>
<div id="innerHost">innerHost
<template shadowrootmode="open">
<slot></slot>
</template>
</div>
</template>
</div>
<script>
selection = getSelection();
outerHost = document.getElementById('outerHost')
outerRoot = outerHost.shadowRoot;
innerHost = outerRoot.getElementById('innerHost');
// Step 1
selection.setBaseAndExtent(light.firstChild, 10, innerHost.firstChild, 5);
// Step 2
range = selection.getRangeAt(0);
range.setEnd(innerHost.firstChild, 6);
</script>
</body>
</html>
```
After step 1,
* Composed range should be at start{light.firstChild, 10} and end{innerHost.firstChild, 5}
* Live range is collapsed because it is across tree scopes, at start{innerHost.firstChild, 5} and end{innerHost.firstChild, 5}
After step 2,
* Live range is changed to start{innerHost.firstChild, 5} and end{innerHost.firstChild, 6}
* Composed range should either:
* A) be updated to same as live range, start{innerHost.firstChild, 5} and end{innerHost.firstChild, 6}
* B) only update the setEnd, it should be at start{light.firstChild, 10} and end{innerHost.firstChild, 6}
* C) does not update composed range. It is still at start{light.firstChild, 10} and end{innerHost.firstChild, 5}
Currently, Blink is following option A and Gecko is following option C. Webkit I believe follows C, although it seems to have a bug with its getRangeAt(0) throwing IndexSizeError.
--
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/dom/issues/772#issuecomment-2491887033
You are receiving this because you are subscribed to this thread.
Message ID: <whatwg/dom/issues/772/2491887033@github.com>
Received on Thursday, 21 November 2024 17:46:37 UTC