- From: Emilio Cobos Álvarez via GitHub <sysbot+gh@w3.org>
- Date: Mon, 01 Aug 2022 19:38:15 +0000
- To: public-css-archive@w3.org
So something like we were mentioning was: ### Make `Highlight` inherit from `EventTarget` So that we can dispatch events on them. ### Add a hit-testing API to the registry Something like: ```webidl partial interface HighlightRegistry { // For parallelism with elementsFromPoint. // Returned values in (z-order, priority) order. sequence<Highlight> highlightsFromPoint(long x, long y); }; ``` The idea is that the page could, either before or after handling DOM events, do something like: ```js document.addEventListener("click", function(e) { if (e.defaultPrevented) return; for (let highlight of CSS.highlights.highlightsFromPoint(e.clientX, e.clientY)) { highlight.dispatchEvent(e); if (e.defaultPrevented) return; } }); ``` ### Passive event listeners / `touch-action` @dbaron / @flackr pointed out that encouraging document-level event listeners may be problematic (because having something like, e.g, a non-passive `pointerdown` event-listener might cause performance issues with scrolling). @flackr proposed to support `touch-action: none` on highlights, so that you can make those event listeners passive as needed. ### Knowing specific ranges that are hit. Per #7512, there are use cases to know the specific ranges that are hit. Which means that maybe the API should do something a bit more complex: ```webidl dictionary HighlightHitTestResult { Highlight highlight; sequence<AbstrangeRange> ranges; } ``` Or so. We could then encourage to do something like putting the highlights in the expando, something like: ```js document.addEventListener("click", function(e) { if (e.defaultPrevented) return; for (let { highlight, ranges } of CSS.highlights.highlightsFromPoint(e.clientX, e.clientY)) { e.ranges = ranges; highlight.dispatchEvent(e); if (e.defaultPrevented) break; } delete e.ranges; }); ``` But that feels rather clunky... Not sure I have a better proposal atm tho. -- GitHub Notification of comment by emilio Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/7513#issuecomment-1201631397 using your GitHub account -- Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config
Received on Monday, 1 August 2022 19:38:17 UTC