断开当前 url 的弹出窗口并更改为新的 url

Disconnect the current url of a popup and change to a new url

我有一个(父)页面,可以通过

打开一个弹出窗口
popup = window.open("https://localhost:3000/#/new", "popup", "status=1, location=1, width=1000, height=1200");

我在后端也实现了(即www):

io.sockets.on('connection', function (socket) {
  console.log("LOG: just connected: " + socket.id);
  socket.emit('id', socket.id);
  socket.on('disconnect', function () {
    console.log("LOG: just disconnected: " + socket.id)
  })
})

因此,手动关闭弹出窗口显示 LOG: just disconnected: ...

时不时的,父页面想要改变弹窗的url。如果我使用 popup.location.href = newUrl,弹出窗口会加载新页面,但不会断开前一个 url;没有显示 LOG: just disconnected: ...。当我手动关闭弹出窗口时,它显示同时断开了几个套接字。

我希望父页面能够断开当前 url 的弹出窗口并更改为新的 url,同时保持弹出窗口打开。因为关闭并重新打开弹出窗口会更改其 location/size,这不是我想要的。

有人知道如何实现吗?

父页面可以向子页面发送 close 消息(例如,通过 postMessage)。那么在子页面一侧,可以通过disconnect().

强制断开

参考文献:1 and 2.