1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 09:47:35 +00:00

LibWeb: Emit "selectionchange" event on document

This commit is contained in:
Aliaksandr Kalenik 2024-02-25 04:20:37 +01:00 committed by Andreas Kling
parent 9ce8189f21
commit cd7b5b18e4
7 changed files with 71 additions and 0 deletions

View file

@ -0,0 +1,6 @@
Ladybird is an ongoing project to build an independent web browser from scratch.
Events:
selectionchange anchorNode=<#text > anchorOffset=1 type=Caret focusNode=<#text > focusOffset=1 isCollapsed=true
selectionchange anchorNode=<#text > anchorOffset=1 type=Caret focusNode=<#text > focusOffset=1 isCollapsed=true
selectionchange anchorNode=<#text > anchorOffset=2 type=Caret focusNode=<#text > focusOffset=2 isCollapsed=true

View file

@ -0,0 +1,46 @@
<script src="include.js"></script>
<style>
#editable {
border: 1px solid #ccc;
font-size: 30px;
width: 400px;
height: 100px;
}
</style>
<div id="editable" contenteditable="true">
Ladybird is an ongoing project to build an independent web browser from scratch.
</div>
<script>
asyncTest(async done => {
function elementToString(e) {
let element_string = `<${e.nodeName} `;
if (e.id) element_string += `id="${e.id}" `;
element_string += ">";
return element_string;
}
document.addEventListener("selectionchange", function (e) {
const selection = window.getSelection();
println(
`selectionchange anchorNode=${elementToString(selection.anchorNode)} anchorOffset=${
selection.anchorOffset
} type=${selection.type} focusNode=${elementToString(
selection.focusNode
)} focusOffset=${selection.focusOffset} isCollapsed=${selection.isCollapsed}`
);
});
const editable = document.getElementById("editable");
println("Events:");
internals.click(20, 10);
await new Promise(resolve => setTimeout(resolve, 0));
internals.click(30, 10);
await new Promise(resolve => setTimeout(resolve, 0));
internals.click(40, 10);
await new Promise(resolve => setTimeout(resolve, 0));
done();
});
</script>