summaryrefslogtreecommitdiff
path: root/Base/res/html/misc
diff options
context:
space:
mode:
authorkleines Filmröllchen <filmroellchen@serenityos.org>2022-05-03 16:50:38 +0200
committerLinus Groh <mail@linusgroh.de>2022-06-05 22:31:06 +0100
commita7a5721149427352845bc0a020f625da9bb02a78 (patch)
tree066d9509f2dbd7de4b0d7d61842d1e9ec46d43d0 /Base/res/html/misc
parenta33b9a8bca838df09dc945be536624ecf0e66392 (diff)
downloadserenity-a7a5721149427352845bc0a020f625da9bb02a78.zip
LibWeb: Dispatch mouse events to topmost element instead of hit target
This improves our spec compliance by allowing the user to click non-element nodes (like text) and having the click be registered with the parent element (like a div or button). This makes Fandom's cookie accept button work if you click the text. Additionally, the events test page contains a test to check the target element, which would previously not exist when we fired the event at a non-element.
Diffstat (limited to 'Base/res/html/misc')
-rw-r--r--Base/res/html/misc/events.html28
1 files changed, 28 insertions, 0 deletions
diff --git a/Base/res/html/misc/events.html b/Base/res/html/misc/events.html
index 47754874a0..d26f8d5245 100644
--- a/Base/res/html/misc/events.html
+++ b/Base/res/html/misc/events.html
@@ -16,5 +16,33 @@
</head>
<body>
<div id="my_div">Hello there!</div>
+
+ <div style="border: 1px solid black; width: 500px; height: 200px" id="divel">
+ CLICK ME CLICK ME CLICK ME CLICK ME CLICK ME CLICK ME CLICK ME CLICK ME CLICK ME CLICK
+ ME CLICK ME CLICK ME CLICK ME CLICK ME CLICK ME CLICK ME CLICK ME CLICK ME CLICK ME
+ CLICK ME CLICK ME CLICK ME CLICK ME CLICK ME CLICK ME
+ </div>
+ <p id="result">This text should be green, whether you click on the div border or the div text.</p>
+ <p>
+ <script>
+ const divel = document.getElementById("divel");
+ const result = document.getElementById("result");
+ divel.addEventListener("click", event => {
+ try {
+ const text = `Result: Clicked on divel element with id ${event.target.getAttribute(
+ "id"
+ )}`;
+ console.log(text);
+ result.innerText = text;
+ result.style.setProperty("color", "green");
+ } catch (e) {
+ const text = `Result: ${e.message}`;
+ console.error(text);
+ result.innerText = text;
+ result.style.setProperty("color", "red");
+ }
+ });
+ </script>
+ </p>
</body>
</html>