Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将CustomElementRegistry复制到子窗口?_Javascript_Html_Dom_Web Component_Custom Element - Fatal编程技术网

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,然后我们还需要包含两次样式。然后我们需要连接事件处理以跨窗口等等。。。这不仅仅是“简单”。看我想出了一个简单的主意: