我正在尝试实现一个下拉框,你可以点击外面来关闭。这个下拉框是自定义日期输入的一部分,并且被封装在输入框的Shadow DOM里。
我想写出类似这样的代码:
window.addEventListener('mousedown', function (evt) {
if (!componentNode.contains(evt.target)) {
closeDropdown();
}
});
然而,该事件被重新定向,因此evt.target
始终是元素之外的对象。事件将穿越多个影子边界才能到达窗口,所以似乎无法真正确定用户是否在我的组件内部单击了。
注意:我没有在任何地方使用Polymer - 我需要一个适用于通用影子DOM的答案,而不是一个特定于Polymer的hack。
window
,因为我将事件监听器添加到窗口上。 - ovangleevent.target
将是host
元素。 - guest271314