如何在同一chrome应用程序的多个窗口之间进行通信
How to communicate between multiple windows of same chrome apps
我有一个打包的chrome应用程序有多个窗口。例如,如果我点击第一个窗口中的按钮,那么第二个窗口就会打开。现在如何发送消息或命令给对方。我已经读了很多关于它,但没有弄清楚,因为我是非常新的。任何示例代码都会很有帮助。
有一个存在的问题如何在同一chrome应用程序的多个窗口之间进行通信?,但不知道该怎么做。
提前感谢!!
您可以使用窗口的postmessage方法,以便将信息发送到另一个窗口。按照这种方法,你可以从一个窗口(a)在另一个窗口(B)上执行一个方法。你需要在窗口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
在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);
});
相关文章:
- 基本html页面和弹出窗口之间的数据交换
- 在 AngularJS 和非 AngularJS 弹出窗口之间共享变量
- 在多个子弹出窗口之间切换控制
- 我想知道是否可以使用 node.js 在窗口之间发送数据
- 选项卡或窗口之间的通信
- 如何在“窗口”之间进行选择.URL.createObjectURL()' 和 'window.webkitURL.cre
- 两个窗口之间的 Websocket 通信
- postMessage() iFrame 和/或弹出窗口之间的 ie6/7 替代品
- 窗口之间有什么区别.主干网中的视图名称和视图名称.js
- 下拉菜单和 AJAX 窗口之间的 jquery 冲突
- 如何使用 postMessage 在顶级窗口之间共享数据
- 是否可以使用 JQuery 或其他方法在两个浏览器窗口之间拖放一些内容
- 两个浏览器窗口之间的通信:弹出窗口和父窗口
- 弹出窗口和浏览器操作窗口之间的chrome.storage
- 在窗口之间切换Selenium Webdriver Internet Explorer
- 浏览器选项卡和窗口之间的区别
- 在不同的javascript窗口之间交谈
- 如何在Protractor中比较两个窗口之间两个元素的值
- 如何在浏览器选项卡/窗口之间进行通信
- ExtJS 5-在窗口之间传递参数