如何将数据从远程窗口传回Chrome扩展程序的后台页面?

abi*_*nop 10 message-passing google-chrome-extension

我有一个chrome扩展,从我的后台页面打开一个远程窗口:

chrome.windows.create({
        type : 'popup',
        url : "https://www.example.com/mypage.html"
    }, function(newWindow) {

    });
Run Code Online (Sandbox Code Playgroud)

在我的远程页面(https://www.example.com/mypage.html)上,我正在等待用户执行操作.执行此操作时,我需要将一些数据传回扩展.

我怎样才能做到这一点?我在文档中找不到任何相关内容(http://developer.chrome.com/extensions/messaging.html)

Kra*_*mir 12

这基本上是可能的.您应该做的是使用内容脚本作为新创建的窗口和后台脚本之间的桥梁.例如:

你的后台脚本:

chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
    alert("message received");
});
chrome.windows.create({
    type : 'popup',
    url : "http://yoursite.com/page.html",
    type: "popup"
}, function(newWindow) {

});
Run Code Online (Sandbox Code Playgroud)

你的内容脚本:

document.addEventListener("hello", function(data) {
    chrome.runtime.sendMessage("test");
})
Run Code Online (Sandbox Code Playgroud)

page.html:

<script>
    var go = function() {
        var event = document.createEvent('Event');
        event.initEvent('hello');
        document.dispatchEvent(event);
    }
</script>
<a href="javascript:go();">Click me</a>
Run Code Online (Sandbox Code Playgroud)

因此,我们的想法是使用文档对象从页面调度事件.内容脚本侦听该事件,并且一旦发生,就会向最初代码所在的后台脚本发送消息.