【发布时间】:2016-09-19 02:13:24
【问题描述】:
我正在尝试实现一个下拉菜单,您可以在外部单击以关闭它。下拉列表是自定义日期输入的一部分,并封装在输入的影子 DOM 中。
我想写这样的东西:
window.addEventListener('mousedown', function (evt) {
if (!componentNode.contains(evt.target)) {
closeDropdown();
}
});
然而,事件被重新定位,所以evt.target 总是在元素之外。事件在到达窗口之前将跨越多个阴影边界,因此似乎无法真正知道用户是否在我的组件内单击。
注意:我没有在任何地方使用聚合物——我需要一个适用于通用影子 DOM 的答案,而不是聚合物特定的 hack。
【问题讨论】:
-
...应该是
window,因为我正在将事件监听器添加到窗口中。 -
我们可以提供一个小提琴/例子吗?
-
“事件在到达窗口之前会跨越多个阴影边界,因此似乎无法真正知道用户是否在我的组件内部单击。” i> 如果单击,
event.target将是host元素
标签: javascript shadow-dom