Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.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 应用程序窗口和单个弹出窗口之间的通信_Javascript_Web Worker - Fatal编程技术网

Javascript 应用程序窗口和单个弹出窗口之间的通信

Javascript 应用程序窗口和单个弹出窗口之间的通信,javascript,web-worker,Javascript,Web Worker,我有一个web应用程序在一个或多个浏览器选项卡/窗口中运行。我还有一个SharedWorker,它连接到每一个选项卡/窗口,还通过websocket与某些服务器通信。到目前为止,一切都按预期进行,没有任何问题 在那里,我还有一个带有SIP/WebRTC插件的弹出窗口(自动打开或与用户交互,这无关紧要)。打开后,我可以通过同一个SharedWorker与它进行通信,这没关系。 SharedWorker还根据worker中的connect事件和其他每个选项卡/窗口中的beforeUnload保存(或

我有一个web应用程序在一个或多个浏览器选项卡/窗口中运行。我还有一个SharedWorker,它连接到每一个选项卡/窗口,还通过websocket与某些服务器通信。到目前为止,一切都按预期进行,没有任何问题

在那里,我还有一个带有SIP/WebRTC插件的弹出窗口(自动打开或与用户交互,这无关紧要)。打开后,我可以通过同一个SharedWorker与它进行通信,这没关系。 SharedWorker还根据worker中的
connect
事件和其他每个选项卡/窗口中的
beforeUnload
保存(或至少正在尝试)有关每个已连接选项卡/窗口的信息。这不是最好的解决方案,但我发现只有一个可行

所有内容都在同一个域、同一个位置上运行

现在,我找不到任何解决方案:

  • 从其他选项卡/窗口获取弹出窗口句柄,而不是从其打开程序,也不可能将句柄转移到SharedWorker
  • 每次对弹出窗口关闭做出反应,导致窗口工作端口丢失
  • 每隔一个选项卡/窗口聚焦弹出窗口,因为它没有句柄

弹出窗口不能处理与sharedworker的通信并接收必须自己聚焦的事件吗?您正在查看一种观察者模式吗?postMessage或window.opener…@Icepickle在弹出窗口上调用
window.focus()
不起作用,它只有在从opener调用时才起作用,但是…@epascarello在某一点上,没有可用的打开窗口。在这一点上,您与所述窗口失去了联系。弹出窗口不能处理与共享工作人员的通信并接收事件,而它必须自己聚焦吗?你是在看一种观察者模式吗?postMessage还是window.opener…@Icepickle在弹出窗口上调用
window.focus()
,它不起作用,只有在从opener调用时才起作用,但是…@epascarello在某个点上没有可用的opener窗口。在这一点上,你失去了与所述窗口的联系。