我的目标是让方案如下:
1) User opens myapp.com in Window A
2) User clicks button which opens myapp.com/doWork in Window B
3) After performing some operations and retrieving data (requiring user input), Window B closes
4) Window A displays the data retrieved from Window B
使用node.js可以吗?我意识到更简单的解决方案就是在一个窗口中完成所有操作。我正在使用快递/把手。
答案 0 :(得分:2)
您应该查看Socket.io,它可以启用Node.js服务器与打开网页的所有浏览器客户端之间的实时通信。
在您的特定情况下,在窗口B关闭之前,服务器应使用新数据向客户端发送消息。然后,客户端代码将能够使用新信息更新网页。
如果您正在寻找准系统解决方案,请查看WebSockets API(Socket.io摘要)。如果您想使用为实时应用程序构建的完整框架,请查看Meteor(显然需要更多代码修改)。
答案 1 :(得分:1)
实际上你不需要在服务器上这样做 据我所知,你的两个窗口都在同一主机/域上打开(包括相同的端口和子域)
这意味着两个窗口都可以在客户端与对方“交谈”
windowB具有window.opener
属性。
所以在windowB中发生的事情,在任何时候你都可以告诉windowA发生了什么,就像这样。
windowB 中的
或 另一种解决方案是使用cookies或localStorage
实际上,localStorage会在设置数据时触发事件(请参阅此问题:localStorage eventHandler Doesn't Get Called) 如果您不共享同一个域,请使用socket.io,其他答案指出。window.opener.setData(myResult); // window.opener == windowA
window.opener.myGlobalNamespaceObject.property = myResult