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

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

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

阅读 3.7k
1 个回答

解决了问题,思路如下:

  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实例,这也是这个问题迟迟没有解决的原因。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题