nwjs网页窗口如何回调父窗口函数?

发布于 2022-09-06 00:00:25 字数 213 浏览 26 评论 0

场景:一个窗口A,加载index.html页面,在窗口A使用 nw.Window.open() 方法打开一个窗口B。B中加载的是一个远程的不受控制的页面。使用inject_js_end方式注入js到窗口B的页面中,执行一个任务。目标是执行完此任务之后,回调窗口A中的一个函数。

发现,窗口B中注入的代码只能是chrome引擎能解析的js代码,而不支持nodejs。所以不知道如何实现此功能。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

吾家有女初长成 2022-09-13 00:00:25

解决了问题,思路如下:

  1. B中注入js,此js相当于远程页面中的js。所以创建一个全局变量task_result;保存任务执行结果。
  2. B中任务执行完成,将结果存储到全局变量task_resulst中,调用js关闭当前窗口。
  3. 触发A中的onClose事件,获取到B的nw window实例,从此实例中获取浏览器window对象 w,然后w.task_result获取任务处理结果即可。

注意:

  1. onclose事件中,处理完任务结果之后调用window.close(true)关闭B。
  2. 调试程序时,如果在onclose中打印B的浏览器window实例,请注意一定不要调用window.close(true)方法,否则将无法看到B的浏览器window实例,这也是这个问题迟迟没有解决的原因。
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文