一尘不染

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

javascript

我正在构建扩展以与Gmail集成,并通过将gmail.js注入页面上下文来与Gmail集成

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

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


阅读 284

收藏
2020-05-01

共1个答案

一尘不染

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

因此,您需要使内容脚本像页面上下文和背景之间的代理一样工作。遵循以下原则:

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

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

2020-05-01