如何在相同Chrome应用程序的多个窗口之间进行通信

问题描述 投票:2回答:2

我有一个包含多个窗口的打包chrome应用程序。例如,如果我在第一个窗口中单击按钮,则打开第二个窗口。现在如何向对方发送消息或命令。我已经阅读了很多关于它的内容,但没有弄清楚,因为我对此非常陌生。任何示例代码都非常有用。

有一个问题How to communicate between multiple windows of the same chrome app?,但不明白该怎么做。

提前致谢!!!

javascript google-chrome google-chrome-app
2个回答
0
投票

您可以使用窗口的postmessage方法,以便将信息发送到另一个窗口。通过遵循此方法,您可以从不同窗口(B)上的窗口(A)执行方法。您需要在窗口B上创建一个事件,告知A该方法正确运行。

代码如下:

发件人:

//create popup window
var domain = 'http://scriptandstyle.com';
var myPopup = window.open(domain + '/windowPostMessageListener.html','myWindow');

//periodical message sender
setInterval(function(){
    var message = 'Hello!  The time is: ' + (new Date().getTime());
    console.log('blog.local:  sending message:  ' + message);
    myPopup.postMessage(message,domain); //send the message and target URI
},6000);

//listen to holla back
window.addEventListener('message',function(event) {
    if(event.origin !== 'http://scriptandstyle.com') return;
    console.log('received response:  ',event.data);
},false);

目的地:

//respond to events
window.addEventListener('message',function(event) {
    if(event.origin !== 'http://davidwalsh.name') return;
    console.log('message received:  ' + event.data,event);
    event.source.postMessage('holla back youngin!',event.origin);
},false);

你也可以在这里找到一个深入的解释:qazxsw poi


0
投票

如果是Chrome应用,则不需要有关域的部分。

你需要一些东西:

http://davidwalsh.name/window-postmessage

发送消息,同时接收:

targetWindow = chrome.app.window.get("window-id").contentWindow;
targetWindow.postMessage(message, "*");
© www.soinside.com 2019 - 2024. All rights reserved.