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

bra*_*ert 3 javascript gmail google-chrome google-chrome-extension

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

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

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

Xan*_*Xan 9

页面上下文脚本确实不能使用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);
Run Code Online (Sandbox Code Playgroud)

您可以概括这一点以传回答案.


小智 8

稍微扩展一下,当使用 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);
Run Code Online (Sandbox Code Playgroud)