Gmail扩展,sendMessage从页面上下文背景

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

这似乎是利用Googleembedded在页面上的一些全局variables的唯一显而易见的方式。

所以现在,我需要回到扩展的一些function。 在正常情况下(通过内容脚本运行),我会向后台脚本发送一条消息,但是在标签本身的上下文中甚至可能发生这种情况?

页面上下文脚本实际上不能使用Chrome API。
但是,它可以分派内容脚本可以捕获的DOM事件。

这里有一个文档的例子。 除了使用window.postMessage ,您还可以调度自定义事件 。

所以,你需要让你的内容脚本像页面上下文和背景之间的代理一样工作。 沿着这些线路的东西:

 // 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); 

你可以概括这个来传回答案。

为了扩展这一点,当使用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);