- From: <bugzilla@jessica.w3.org>
- Date: Thu, 21 Feb 2013 02:29:08 +0000
- To: public-webapps-bugzilla@w3.org
https://www.w3.org/Bugs/Public/show_bug.cgi?id=21066 Bug ID: 21066 Summary: [Shadow]: Provide an event path api Classification: Unclassified Product: WebAppsWG Version: unspecified Hardware: PC OS: All Status: NEW Severity: normal Priority: P2 Component: Component Model Assignee: dglazkov@chromium.org Reporter: sorvell@chromium.org QA Contact: public-webapps-bugzilla@w3.org Blocks: 14978 It's a common practice to install an event listener on some ancestor node and interrogate the event target to discover some intermediate node of importance on which the event occurred. It's possible to install listeners on each of the intermediate nodes, but it's not efficient to do so. Consider this setup: in a chess game, there's a <table> representing the board. Each cell can contain a piece and we need to know when the user clicks on a cell. Instead of installing a click event listener on each of the 64 cells, we install one listener on the board <table> itself. The event target might be a piece and we crawl up the dom tree to find the cell that was clicked. There's a problem with this approach when using shadowDOM. There is no convenient way in general to take an event target and crawl up the tree if doing so needs to traverse into shadowDOM. For example, let's imagine that the chess pieces are in the game element's light DOM and the board cells are in its shadowDOM. In this case event.target.parentNode will be the board itself so we cannot easily discover which cell was clicked. One way to solve this problem is to provide an api for discovering the path of an event through a shadowRoot. This might return a node list of effective parents in the composed dom tree. For example, shadowRoot.pathForEvent(e) would in this case return: [e.target, cell, table, game's shadowRoot]. -- You are receiving this mail because: You are the QA Contact for the bug.
Received on Thursday, 21 February 2013 02:29:09 UTC