Javascript 从加载的iframe向chrome扩展发送消息

Javascript 从加载的iframe向chrome扩展发送消息,javascript,iframe,javascript-events,google-chrome-extension,Javascript,Iframe,Javascript Events,Google Chrome Extension,我有一个用户在浏览器上安装的chrome扩展,当你打开扩展弹出窗口(后台页面)时,它所做的就是加载一个在我的服务器上运行的整个应用程序后端 我想做的是在我的后端应用程序上有某种类型的事件发射器,可以将消息发送回加载此应用程序的chrome扩展 我试过这个: background.html: <body> <iframe id="gateway" src="http://www.catchit.com"></iframe> </body>

我有一个用户在浏览器上安装的chrome扩展,当你打开扩展弹出窗口(后台页面)时,它所做的就是加载一个在我的服务器上运行的整个应用程序后端

我想做的是在我的后端应用程序上有某种类型的事件发射器,可以将消息发送回加载此应用程序的chrome扩展

我试过这个:

background.html:

<body>
    <iframe id="gateway" src="http://www.catchit.com"></iframe>
</body>
我的内容脚本正在等待此事件:

document.addEventListener("newMessage", function(data) {
    chrome.runtime.sendMessage(data);
});
我的背景脚本也是:

chrome.runtime.onMessage.addListener(function(message) {
    alert("message received" + message);
});
但这当然行不通。。。因为,事件是在iframe上下文(www.servera.com)中触发的

我错过了什么?我想不出怎么回留言。这将是一个了不起的桥梁之间的实际应用程序加载在扩展的弹出窗口和扩展本身,它可以稍后发送消息到网站上打开的用户浏览器

谢谢

根据我所说的,我制定了以下解决方案:

Background.js:

// Listen for message from application (iframe)
top.window.addEventListener("message", function(message) {
    // Notify content-script about new message
});
我的应用程序javascript是iframe应用程序的一部分:

top.window.postMessage({data: {users: users, message: message}}, "*");
return false;

从这一点上,您可以通过后台告诉您的内容脚本在实际页面/选项卡上执行什么操作,这是基于通过后台iframe中加载的应用程序接收到的消息。html

可以解决您的问题吗?我的问题是iframe中没有加载内容脚本。。我不知道该怎么做。。。我认为是这样。
top.window.postMessage({data: {users: users, message: message}}, "*");
return false;