2010-10-14 17 views
15

J'écris une extension Chrome qui doit modifier une application Web populaire lorsqu'elle est chargée. Malheureusement, la plupart de l'interface utilisateur de cette application Web est rendue à l'intérieur d'un iframe, et bien que l'adresse de cette iframe corresponde à ma déclaration de correspondance content_scripts, le script utilisateur n'est invoqué que pour le cadre supérieur. Q: Existe-t-il une méthode d'accès HTML rendu à l'intérieur d'un iframe à partir d'une extension de script de contenu Chrome? Si oui, quelles autorisations et autres options de manifeste dois-je spécifier? Merci.Accès aux iframes à partir d'une extension de script de contenu Chrome

+1

Cela est-il important pour vous? http://code.google.com/p/chromium/issues/detail?id=37920 – bzlm

+1

Non, ce n'est pas le cas. L'iframe n'est pas injecté par l'extension, mais par l'application Web d'origine. – dpq

Répondre

38

J'ai résolu le problème. L'option suivante doit être spécifiée dans la section content_scripts du manifest.json: "all_frames": true. Sans cela, le script est uniquement appliqué au cadre supérieur.

// Parfois, il suffit de faire attention à RTFM.

+5

RTFM vous enregistrez mon jour F –

8

Même "all_frames": true ne semble pas utile dans le cas des iframes sans @src. Cela est décrit dans le bogue http://code.google.com/p/chromium/issues/detail?id=20773, qui couvre également certaines solutions de contournement, y compris l'obtention du contentDocument de l'élément iframe dans la page source, par exemple. $('a', $($("#canvas_frame")[0].contentDocument)).

Ce bug n'est pas exactement le problème que vous aviez (vous vouliez charger votre script de contenu dans l'iframe, pas interagir entre l'iframe et l'image externe) mais je pense que la plupart des gens qui ont un problème l'autre aussi.