Gmail扩展程序,sendMessage从页面上下文到后台

时间:2014-09-14 22:53:55

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

我正在构建一个与Gmail集成并通过将gmail.js注入页面上下文与Gmail集成的扩展程序,如下所示:https://github.com/KartikTalwar/gmail-chrome-extension-boilerplate/blob/master/content.js

这似乎是利用谷歌嵌入页面的一些全局变量的唯一明显方法。

所以现在,我需要回到扩展的一些功能。在正常情况下(从内容脚本操作),我会向后台脚本发送一条消息,但是甚至可以从选项卡本身的上下文中发送消息吗?

2 个答案:

答案 0 :(得分:6)

页面上下文脚本确实无法使用Chrome API 但是,它可以调度内容脚本可以捕获的DOM事件。

文档here中有一个示例。除了使用window.postMessage之外,您还可以dispatch custom events

因此,您需要使内容脚本像页面上下文和后台之间的代理一样工作。这些方面的东西:

// Content script
//Listen for the event
window.addEventListener("PassToBackground", function(evt) {
  chrome.runtime.sendMessage(evt.detail);
}, false);

// Page context
var message = {/* whatever */};
var event = new CustomEvent("PassToBackground", {detail: message});
window.dispatchEvent(event);

您可以对此进行概括以传回答案。

答案 1 :(得分:2)

为了扩展这一点,在使用gmail.js时,为了从main.js向您的扩展页面发送消息,您需要使用内容脚本作为中介。这个图有望说明。

main.js
 |
 | window.postMessage();
 |
 V
content.js //window.addEventListener("message", callback, false);
 |
 | chrome.runtime.sendMessage();
 |
 V
background.js //chrome.runtime.onMessage.addListener(callback);