2012-06-04 142 views
1

我必须开发一个程序,我需要从服务器获取事件并且想要更新网页。如何在浏览器标签之间共享数据?

例如我有多个浏览器选项卡打开聊天和每个聊天页面都有自己的线程来从服务器获取该事件,但一旦聊天中的一个线程将获取该事件比其他获取由另一个聊天页面提取的空栈事件。

所以,这里我关心的是与多个聊天页面共享事件而不刷新页面。

+1

看起来或许可以改变“获取消息”的设计以更好地支持这种情况(如果多个*浏览器*打开,该怎么办?) – 2012-06-04 18:11:43

回答

3

听起来像你可以使用postMessage让该标签获取消息与你的域上的所有其他页面共享它。

postMessage(JSON.stringify({chatmsg: someVarFromServer}), "http://www.mydomain.com"); 

有其他的聊天页面监听message事件:

window.addEventListener("message", receiveMessage, false); 

function receiveMessage(event) { 
    // reject foreign messages! 
    if (event.origin !== "http://www.mydomain.com") return; 

    var message = JSON.parse(event.data).chatmsg; 

    // this other page now has the message 
} 
0

如果你想开发用纯JavaScript中的即时聊天应用程序,我强烈建议APE这是这样一个强大的起点目标。
如果你不想使用框架这里有2跨浏览器的解决方案:

  • 检查通过发送一个AJAX请求定期
  • 用于接收事件,如第三方应用程序事件Flash的XML套接字
相关问题