为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

陪伴而非守候 2019-11-20 14:36:22
我正在构建扩展以与Gmail集成,并通过将gmail.js注入页面上下文来与Gmail集成,如下所示:https : //github.com/KartikTalwar/gmail-chrome-extension-boilerplate/blob/master /content.js这似乎是利用Google嵌入到页面中的某些全局变量的唯一明显方法。所以现在,我需要回到扩展的某些功能。在正常情况下(通过内容脚本操作),我会向后台脚本发送一条消息,但是即使在选项卡本身的上下文中也可能吗?
查看完整描述

2 回答

?
温温酱

TA贡献1752条经验 获得超4个赞

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

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


查看完整回答
反对 回复 2019-11-20
?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

只是为了对此稍作扩展,在使用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);


查看完整回答
反对 回复 2019-11-20
  • 2 回答
  • 0 关注
  • 414 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信