如何在父页面 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 : 准备就绪后可以从新页面向父页面发送消息
我的父页面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 : 准备就绪后可以从新页面向父页面发送消息