我有一个包含多个窗口的打包镀铬应用。例如,如果我在第一个窗口中单击按钮,则打开第二个窗口。现在如何向对方发送消息或命令。 我已经阅读了很多关于它的内容,但没有弄清楚,因为我对此非常陌生。 任何示例代码都非常有用。
现有问题How to communicate between multiple windows of the same chrome app?,但不明白该怎么做。
提前致谢!!!
答案 0 :(得分: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);
您还可以在此处找到详细解释:http://davidwalsh.name/window-postmessage
答案 1 :(得分:0)
对于Chrome应用,则不需要有关域的部分。
您需要以下内容:
targetWindow = chrome.app.window.get("window-id").contentWindow;
targetWindow.postMessage(message, "*");
发送消息,而接收:
window.addEventListener('message', function(event) {
var windowId = chrome.app.window.current().id;
console.log(windowId + ': received a message: ' + event.data, event);
var message = 'hello back!';
console.log(windowId + ': sending message: ' + message);
event.source.postMessage(message, event.origin);
});