2012-04-02 4 views
6

Aufgrund der jüngsten Änderungen in der Chrome-API, mein Plugin gibt diesen Fehler:Wie erhalte ich die Erlaubnis, auf meine eigenen Extensions-Ressourcen (eine bestimmte Seite) zuzugreifen?

Error during tabs.executeScript: Cannot access contents of url "chrome-extension://ecfgljdfndkhhbmhcnelbpnhkflgiokp/cm_signature_editor.html". Extension manifest must request permission to access this host.

Diese nie der Fall sein verwendet. Jetzt frage ich mich, wie ich die URL der Chrome-Erweiterung erhalten in sie Manifest-Datei ist:

Ich weiß, ich kann die URL oder eine Ressource innerhalb meiner Erweiterung bekommen etwa so:

chrome.extension.getURL('/manifest.json')

Aber ich don‘ Ich weiß, wie das in der Manifest-Datei funktionieren kann.

Gibt es einen anderen Weg, um diesen Code zum Laufen zu bringen?

chrome.tabs.executeScript(null, {code:function_to_execute}, function() { 
    // callback 
}); 

Interessant ist, dass, selbst wenn ich die Chrom-URL codieren es nicht funktioniert (ich habe den gleichen Fehler)

"permissions" : [ 
    "tabs", 
    "contextMenus", 
    "chrome-extension://ecfgljdfndkhhbmhcnelbpnhkflgiokp/*" 
    ], 
+0

Welche Manifestversion verwenden Sie - 1 oder 2? – hamczu

+0

nicht angeben, aber ich nehme zuerst an. –

+0

Wechsel zu Manifest Version 2 gibt mir diesen Fehler: 'Port-Fehler: Konnte keine Verbindung herstellen. Das Empfangsende existiert nicht. " –

Antwort

1

Ich denke, man kann ein Skript in einer Erweiterung Seite, dass injizieren Weg. Sie sollten das Skript in die Seite integrieren, indem Sie es einfach in Ihre Erweiterungs-HTML-Datei schreiben. Und comunications zwischen Erweiterungsseite mit chrome.extension.sendRequest und chrome.extension.onRequest machen

-1

Vielleicht weiß ich, was dein Problem ist;) Es gibt zwei Möglichkeiten, die Content-Skript in chrome.tabs.executeScript zu injizieren:

  • Code string - funktioniert ähnlich wie eval
  • Dateinamen - also wenn Sie js ausführen möchten Datei, die Sie in Ihrem Erweiterungsverzeichnis haben, es ist nur Namen übergeben {file: 'js/script.js'}

Zusätzlich müssen Sie den richtigen Site-Host im Manifest-Berechtigungsfeld hinzufügen, z. Wenn Sie Inhaltsskript in http://example.com/page.html ausführen möchten, fügen Sie example.com Host

0

chrome.extension.getViews() kann hilfreich sein.

Verwandte Themen