2010-10-14 6 views
15

Sto scrivendo un'estensione di Chrome che deve modificare una nota app Web quando caricata. Sfortunatamente, la maggior parte dell'interfaccia utente di quell'app Web viene visualizzata all'interno di un iframe e sebbene l'indirizzo di tale iframe corrisponda alla mia dichiarazione di corrispondenza content_scripts, lo script utente viene richiamato solo per il frame superiore.Accesso agli iframe da un'estensione di script di contenuto di Chrome

D: Esiste un metodo per accedere a HTML reso all'interno di un iframe da un'estensione di script di contenuto di Chrome? In caso affermativo, quali autorizzazioni e altre opzioni manifest devo specificare? Grazie.

+1

È rilevante per te? http://code.google.com/p/chromium/issues/detail?id=37920 – bzlm

+1

No, non lo è. L'iframe non viene iniettato dall'estensione, ma dall'app web originale. – dpq

risposta

38

Ho risolto il problema. La seguente opzione deve essere specificata nella sezione content_scripts di manifest.json: "all_frames": true. Senza di esso, lo script viene applicato solo al frame superiore.

// A volte basta un RTFM con attenzione.

+5

RTFM si salva il mio giorno F –

8

Anche "all_frames": true non sembra essere di aiuto nel caso di iframe senza @ src. Questo problema è discusso nel bug http://code.google.com/p/chromium/issues/detail?id=20773, che copre anche alcune soluzioni alternative, tra cui ottenere lo contentDocument dell'elemento iframe nella pagina di origine, ad es. $('a', $($("#canvas_frame")[0].contentDocument)).

Questo bug non è esattamente il problema che si stava avendo (si voleva caricare lo script di contenuto all'interno dell'iframe, non interagire tra l'iframe e il frame esterno) ma penso che la maggior parte delle persone che hanno uno dei problemi avrà anche l'altro.

Problemi correlati