Chrome扩展程序,在标签之间发送数据

时间:2014-11-23 01:59:48

标签: javascript google-chrome google-chrome-extension

我正在开发一个简单的扩展,但我无法弄清楚如何继续前进。我想这是一个“简单”的问题。

情景:

  • 用户选择文字
  • 打开上下文菜单并点击扩展名
  • 将打开一个新标签
  • 使用所选/突出显示的文字
  • 填写文本区域

我做了前三项,到了第四项我尝试了chrome.tabs.query / executeScript / messaging,ajax post ......没有成功。

function sendReport() {
    return function(info, tab) {
        var selectedText = info.selectionText;
        var cr_url = 'http://localhost/cr/index.php';
        var tab = chrome.tabs.create({ url: cr_url }, function(tab){

        });
    }
}

var OgameToConverter = chrome.contextMenus.create({
    "title": "Enviar Relatório",
    "contexts": ["selection"],
    "onclick": sendReport()
});

1 个答案:

答案 0 :(得分:1)

您可以使用chrome.runtime.sendMessagechrome.tabs.sendMessage在标签之间发送消息。要接收消息,请使用chrome.runtime.onMessage.addListener方法在接收选项卡上添加消息的侦听器。

示例:

chrome.tabs.create({ url: cr_url }, function(tab){
  chrome.tabs.sendMessage(tab.id, {greeting: "hello"}, function(){});
});

在标签中:

chrome.runtime.onMessage.addListener(
  function(message, sender, sendResponse) {
    // do what you want to the message
});

或者,您可以使用window.open创建窗口,使用window.postMessage发送邮件,并通过Message window.addEventListener("message", ...);事件来接收邮件>