我正在构建与Gmail集成的扩展,以及通过将gmail.js注入(inject)页面上下文来与Gmail集成的扩展,如下所示:https://github.com/KartikTalwar/gmail-chrome-extension-boilerplate/blob/master/content.js

这似乎是利用Google嵌入在页面上的某些全局变量的唯一显而易见的方法。

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

最佳答案

页面上下文脚本确实不能使用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);

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

关于javascript - Gmail扩展程序,将sendMessage从页面上下文发送到后台,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25838804/

10-15 02:53