如何在父页面 js 和子弹出 js 之间传递值?

How can I pass values between parent page js and child popup js?

我的父页面js文件脚本:

var PopupConnect = window.open("http://localhost:8080");
var popup_function = PopupConnect.CreateText();

我的弹出页面js文件脚本:

function CreateText() {
  var text = "random text";
  return json({
        result: text
      })
}

父页面中的这段 js 行运行良好,触发了浏览器中的新选项卡:

PopupConnect = window.open

我得到的错误在它之后的行中:

Uncaught TypeError: PopupConnect.CreateText is not a function

父页面js如何正确调用子页面的js函数?这可能吗?以及如何将CreateText函数的结果传回给父页面js?

注意:父页面是 Python 服务器上的 运行,子弹出页面是 Node.js 服务器上的 运行。当然,两个页面都在同一个浏览器中打开。

有些人可能会建议使用 localStorage.setItem 和 localStorage.getItem 方法,但它不起作用,因为两个页面在不同的本地主机端口上是 运行,当然在生产中它们将是 运行 在不同的域上。仅供参考,我已经尝试过这种方法,但没有用。

更新:

**我最终在父页面中使用了window.postMessage并在子弹出窗口中放置了addEventListener所以一旦它收到消息,它就会运行 js 函数。 现在我面临的问题时间问题

如何在调用 window.open 后插入延迟,以便子页面有时间在父页面运行 window.postMessage 之前完全加载?我知道有一个叫做 'await' 的东西,但我认为这是为了将 JS 用作后端而不是前端?解决此计时问题的最佳方法是什么?**

你可以试试 Window.postMessage 。希望能帮到你

在父页面和子页面中创建一个事件监听器。

发送: 父页面发送-----消息---->给子页面(事件监听器) 回复: 子页面发送-----消息---->到父页面(事件监听)

更新 : 关于 timming 新页面 onload : 准备就绪后可以从新页面向父页面发送消息