Javascript 如何将CustomElementRegistry复制到子窗口?
一旦我们调用了Javascript 如何将CustomElementRegistry复制到子窗口?,javascript,html,dom,web-component,custom-element,Javascript,Html,Dom,Web Component,Custom Element,一旦我们调用了window.open(…),我们如何让相同的自定义元素标记也在新窗口中工作?新窗口是一个新的上下文,意味着它不直接知道打开程序 它有一个新的窗口对象,因此旧窗口中没有全局对象可用 您需要将所有JS文件加载到此新窗口的html中,才能访问Web组件 您可以在两个窗口之间进行通信,但即使这样也相当有限 父级可以在子级中触发代码,子级可以将消息发送到父级窗口:也许这提供了一些见解:是的,您需要重新创建自定义元素,但子级知道它的开头:这里似乎有些痛苦。例如,可能我并不拥有所有的自定义元素
window.open(…)
,我们如何让相同的自定义元素标记也在新窗口中工作?新窗口是一个新的上下文,意味着它不直接知道打开程序
它有一个新的窗口
对象,因此旧窗口中没有全局对象可用
您需要将所有JS文件加载到此新窗口的html中,才能访问Web组件
您可以在两个窗口之间进行通信,但即使这样也相当有限 父级可以在子级中触发代码,子级可以将消息发送到父级窗口:也许这提供了一些见解:是的,您需要重新创建自定义元素,但子级知道它的开头:这里似乎有些痛苦。例如,可能我并不拥有所有的自定义元素类,我使用的是第三方自定义元素。因此,我需要先在子窗口中加载所有库,但这似乎效率很低。然后,如果这些库中存在单例,则可能会导致跨窗口的多个实例出现异常。使用React门户,我可以轻松地将DOM元素呈现到另一个窗口中,而所有React逻辑都完全位于父窗口中。我想对自定义元素做一些类似的操作。您可以始终在原始窗口和打开的窗口之间发送消息。因此,您可以在它们之间传递有限的数据。在这两个页面中加载组件不是一个大问题。您只需包含两次脚本。@Intervalia,然后我们还需要包含两次样式。然后我们需要连接事件处理以跨窗口等等。。。这不仅仅是“简单”。看我想出了一个简单的主意: