Estensione Gmail, inviaMessaggio allo sfondo dal contesto della pagina

Sto creando un’estensione da integrare con Gmail e l’integrazione con Gmail inserendo gmail.js nel contesto della pagina, come mostrato qui: https://github.com/KartikTalwar/gmail-chrome-extension-boilerplate/blob/master /content.js

Sembra essere l’unico modo ovvio per utilizzare alcune statistiche globali che Google sta incorporando nella pagina.

Quindi ora ho bisogno di tornare ad alcune delle funzionalità dell’estensione. In condizioni normali (operando da uno script di contenuto), invierei un messaggio allo script di sfondo, ma è anche ansible dal contesto della scheda stessa?

Uno script di contesto di pagina non può, infatti, utilizzare l’API di Chrome.
Tuttavia, può inviare eventi DOM che possono essere catturati dallo script di contenuto.

C’è un esempio nella documentazione qui . Oltre a usare window.postMessage , puoi inviare eventi personalizzati .

Pertanto, è necessario che lo script di contenuto funzioni come un proxy tra il contesto e lo sfondo della pagina. Qualcosa in questo senso:

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

È ansible generalizzare questo per passare una risposta indietro.

Solo per espandere un po ‘questo aspetto, quando usi gmail.js, per ottenere un messaggio da main.js alla tua pagina di estensione, devi usare lo script di contenuto come intermediario. Si spera che questo diagramma illustri.

 main.js | | window.postMessage(); | V content.js //window.addEventListener("message", callback, false); | | chrome.runtime.sendMessage(); | V background.js //chrome.runtime.onMessage.addListener(callback);