2012-12-03 20 views
8

Sto sviluppando un'estensione chrome che utilizza jQuery/Zepto nello script di contenuto. Ora, l'estensione è pensata per funzionare su ogni sito Web, il che significa che una copia di jQuery/Zepto viene caricata su ogni scheda che l'utente apre.chrome: condivisione di un oggetto tra script di contenuto e script di sfondo

C'è un modo per condividere l'oggetto jQuery/Zepto tra i vari script di contenuto?

So che gli script di contenuto possono comunicare con lo script di sfondo. Speravo di poter consentire allo script in background di accedere all'oggetto jQuery e restituire un riferimento ad esso, a ciascuno degli script di contenuto. Ma ho realizzato che solo i messaggi JSON possono essere passati tra il contenuto e gli script di sfondo.

C'è un modo per ottenere ciò che voglio?

+0

No, non è possibile condividere i riferimenti alle funzioni dirette tra gli script di contenuto. (domanda duplicata: [Come trasferire dati tra gli script di contenuto di due diverse schede?] (http://stackoverflow.com/questions/11597416/how-to-transfer-data-between-the-content-scripts-of- due differenti-schede)). –

+0

Posta questo come risposta e lo accetterò. A proposito, ho pensato ieri che ottenere jQuery incluso in ogni pagina potrebbe non essere effettivamente un problema, perché a differenza delle risorse effettive di una pagina web questo non deve essere scaricato. Dato che la dimensione media di una pagina web si avvicina a 1 MB (come ho letto online), l'aumento del consumo di memoria non dovrebbe essere un grosso problema. Sembra avere un senso? –

risposta

9

Contenuto script in diverse schede non hanno accesso a vicenda oggetti JavaScript sia.

Chrome supporta la comunicazione tra gli script di contenuto e/o la pagina di sfondo tramite chrome.runtime.sendMessage + .onMessage. Poiché tutti i messaggi sono serializzati JSON, l'oggetto JavaScript non può essere "filtrato" in altri contesti in questo modo.

Quindi: No, non è possibile condividere oggetti come jQuery con (contenuto script in) altre schede.

1

Execution environment di Content Scripts assicurano script di contenuti possono comunicare tra loro

Es:

"content_scripts": [ 
    { 
     "matches": ["<all_urls>"], 
     "js": ["myscript.js","myscript1.js"] 
    } 
    ] 
} 

Un Individual DOM Environment cui script di contenuti ["myscript.js","myscript1.js"] iniettati accerta myscript1.js avere accesso a tutti i contenuti (funzioni, variabili) di myscript.js, ma questo si interrompe dal momento in cui due Individual DOM Environment stanno comunicando.

Detto questo, cosa requisito Limitazione \ vedete in Content Scripts che richiede requisito dove message passing esigenze background pages di accedere DOM of injected pages?

Si prega di elaborare

Problemi correlati