我的父页面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之前完全加载?我知道有一种叫做"等待"的东西,但我认为这是为JS被用作后端而不是前端?解决这个时间问题的最佳方法是什么?* *
您可以在windows中尝试。postMessage。希望对你有所帮助
在父页面创建事件监听器&子页面。
发送:父页面发送-----消息---->到子页(事件侦听器)回答:子页面发送-----消息---->到父页(事件监听器)
:关于timming
new page onload:当准备就绪时,您可以从新页面向父页面发送消息