Skip to content
This repository was archived by the owner on Feb 11, 2021. It is now read-only.

Commit a8f7de3

Browse files
committed
Merge pull request #128 from Polymer/svg-use-target
Workaround <use> element event path
2 parents b0dd7bd + fdf80d6 commit a8f7de3

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

src/dispatcher.js

+10
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@
7575
0
7676
];
7777

78+
var HAS_SVG_INSTANCE = (typeof SVGElementInstance !== 'undefined');
79+
7880
/**
7981
* This module is for normalizing events. Mouse and Touch events will be
8082
* collected here, and fire PointerEvents that have the same semantics, no
@@ -246,6 +248,14 @@
246248
for (var i = 0; i < CLONE_PROPS.length; i++) {
247249
p = CLONE_PROPS[i];
248250
eventCopy[p] = inEvent[p] || CLONE_DEFAULTS[i];
251+
// Work around SVGInstanceElement shadow tree
252+
// Return the <use> element that is represented by the instance for Safari, Chrome, IE.
253+
// This is the behavior implemented by Firefox.
254+
if (HAS_SVG_INSTANCE && (p === 'target' || p === 'relatedTarget')) {
255+
if (eventCopy[p] instanceof SVGElementInstance) {
256+
eventCopy[p] = eventCopy[p].correspondingUseElement;
257+
}
258+
}
249259
}
250260
// keep the semantics of preventDefault
251261
if (inEvent.preventDefault) {

0 commit comments

Comments
 (0)