2012-04-17 14 views
7

Ich möchte ein Inhaltsskript auf einem Iframe mit einer URL der Erweiterung chrome-extension: // ausführen. Ich habe eine Linie auf meine manifest.json, dass ich die Dokumentation http://code.google.com/chrome/extensions/match_patterns.htmlPasst content_scripts zu "chrome-extension: // */*"?

chrome-extension://*/* 

kopiert, aber wenn ich meine Erweiterung neu zu laden erhalte ich eine Warnung:

Could not load extension from '/work/sirius/extension'. 
Invalid value for 'content_scripts[2].matches[0]': Invalid scheme. 

Jede Idee, wie diese zum Laufen bringen ?

+0

Wie in der Antwort von @Konstantin Smolyanin unten erwähnt, sagt die Dokumentation nichts über die Fähigkeit, Inhaltsskripte in 'chrome-extension:' pages zu injizieren. –

Antwort

7

No. Nur ftp:, file:, http: und https: können durch eine Inhaltsskriptdeklaration abgeglichen werden.

Ungültige URL-Muster in den Feldern matches und exclude_matches werden zurückgewiesen (beim Versuch, die Erweiterung zu laden, wird ein Fehler generiert).

Ungültige Muster bei permissions option in the manifest file werden ignoriert.

Wenn Sie ein Skript auf einer Registerkarte von Ihrer Erweiterung ausführen möchten, verwenden Sie in Ihrem Hintergrundskript chrome.extension.getViews. Noch besser, entwerfen Sie die Seiten Ihrer Erweiterung so, dass sie effectively communicate with each other(example).

+0

Ich möchte ein Inhaltsskript auf einem Iframe in einer Webseite ausführen. chrome.extension.getViews() erlaubt Skripte auf Erweiterungen, nicht auf Webseiten. – johnjbarton

+0

Ich implementiere einen postMessage-basierten Kommunikationsmechanismus zum iframe, aber der iframe ist nicht mein Code. Daher möchte ich, dass die content_scripts mir erlauben, den postMesssage() - Endpunkt zu injizieren. – johnjbarton

+0

Der obige Link zu der Option 'Berechtigungen' in der Manifest-Datei führte mich dazu, die programmatische Skript-Injektion zu untersuchen. Leider funktioniert das auch nicht: Die Web-App, die die Chrome-Erweiterung hostet: // iframe kann den Erweiterungscode, der für die Injektion in den iFrame benötigt wird, nicht ausführen. Vielleicht kann ich eine separate Erweiterung schreiben, um programmatisch zu injizieren, wenn der Tab eine passende URL hat. – johnjbarton

8

Ich habe genau das gleiche Problem, schauen Sie sich die API http://code.google.com/chrome/extensions/match_patterns.html es sagt deutlich, dass sie chrome-extension://*/* akzeptieren sie noch nicht.

Sie müssen die API aktualisieren, um Leute nicht zu verwirren.

+2

Es gibt ein offenes Problem, um die Dokumentation zu korrigieren: http://code.google.com/p/chromium/ Ausgaben/Detail? id = 153245 – rsanchez

+1

Wie @Konstantin Smolyanin Antworten unten, die Dokumentation wurde aktualisiert. –

5

Es scheint, dass Chrome-Autoren die Möglichkeit, Inhaltsskripts in chrome-extension:-Seiten eingefügt zu haben, stillschweigend entfernt haben. Documentation sagt immer noch, dass es funktioniert und enthält sogar Beispiele mit chrome-Erweiterung: Schema, aber eigentlich funktioniert es nicht. So jetzt nur http:, https: und ftp: Arbeit "von der Box" und file: kann funktionieren, wenn Benutzer Ihrer Erweiterung diese auf Erweiterungen (chrome: // Erweiterungen /) Seite aktiviert hat.

Update: jetzt Dokumentation oben ist aktualisiert und sagt nichts über die Fähigkeit, Content-Skripte auf chrome-extension: Seiten zu injizieren.