2010-10-14 12 views
15

Piszę rozszerzenie Chrome, które musi zmienić popularną aplikację internetową po wczytaniu. Niestety, większość interfejsu użytkownika tej aplikacji internetowej jest renderowana wewnątrz elementu iframe i chociaż adres tego elementu iframe jest zgodny z moją deklaracją zgodności content_scripts, skrypt użytkownika jest wywoływany tylko dla górnej ramki.Uzyskiwanie dostępu do ramek iframe z rozszerzenia skryptu treści Chrome

P: Czy istnieje metoda dostępu do HTML renderowanego wewnątrz elementu iframe z rozszerzenia skryptu treści Chrome? Jeśli tak, jakie uprawnienia i inne opcje manifestu należy podać? Dzięki.

+1

Czy to dotyczy Ciebie? http://code.google.com/p/chromium/issues/detail?id=37920 – bzlm

+1

Nie, nie jest. Element iframe nie jest wstrzykiwany przez rozszerzenie, ale przez oryginalną aplikację internetową. – dpq

Odpowiedz

38

Rozwiązałem problem. Poniższą opcję należy podać w sekcji content_scripts pliku manifest.json: "all_frames": true. Bez niego skrypt zostanie zastosowany tylko do górnej ramki.

// Czasami trzeba dokładnie RTFM.

+5

RTFM oszczędzasz mój dzień F –

8

Nawet w przypadku ramek iframe bez @src nawet "all_frames": true nie wydaje się pomocne. Zostało to omówione w błędzie http://code.google.com/p/chromium/issues/detail?id=20773, który obejmuje również niektóre obejścia, w tym uzyskanie elementu iframe na stronie źródłowej, np. contentDocument. $('a', $($("#canvas_frame")[0].contentDocument)).

Ten błąd nie jest dokładnie problemem, który miałeś (chciałeś załadować swój skrypt zawartości wewnątrz elementu iframe, nie wchodzić w interakcje między ramką iframe i ramką zewnętrzną), ale myślę, że większość ludzi, którzy mają jeden z problemów, będzie miała także ten drugi.

Powiązane problemy