我在我的网站上安装了一个Angular网络组件。它使用Shadow DOM,因此非常快(在我的情况下必须如此)。
在我的网站上,我还有一个在键盘按h键时打开弹出窗口以显示一些有用信息的快捷方式。这个h键绑定必须保持不变。在此处可以看到如何实现示例代码:https://jsfiddle.net/js1edv37/ 这是一个简单的事件侦听器,监听
然而,当我的网络组件有焦点的
您可以通过在
是否有一种方法让我的来自Shadow DOM网络组件外部的脚本,仍然监听
在我的网站上,我还有一个在键盘按h键时打开弹出窗口以显示一些有用信息的快捷方式。这个h键绑定必须保持不变。在此处可以看到如何实现示例代码:https://jsfiddle.net/js1edv37/ 这是一个简单的事件侦听器,监听
document
:$(document).on("keyup", function(e) {
}
然而,当我的网络组件有焦点的
textarea
或input
元素时,这也会被触发。这是因为它使用了Shadow DOM,外部的脚本无法访问。您可以通过在
input
和textarea
元素内外按键盘上的h键来测试它。是否有一种方法让我的来自Shadow DOM网络组件外部的脚本,仍然监听
keyup
事件,但使其监听页面上的所有元素?甚至是在影子DOM中的元素。
ref
),那么您就可以通过ref.shadowRoot
访问其 Shadow DOM。或者在 Angular 代码内部使用this.shadowRoot
。 - Supersharpindex.html
包含 Web 组件(Shadow DOM)和文本区域。您会如何解决它? - MortenMoulder