Meine Chrome-Erweiterung verwendet nicht content_scripts
, weil ich den Code nicht auf jeder Seite injizieren möchte. Wenn der Benutzer stattdessen auf die Schaltfläche klickt, öffnet sich ein Popup-Fenster und fügt Code in die Seite ein.Chrome Erweiterungserlaubnis für "über: leere" Seite
Also, in den manifest.json
gibt es einen Berechtigungsblock:
"permissions": [
"activeTab"
]
Und im popup.js
gibt diesen Code:
chrome.windows.getCurrent(function(win) {
chrome.tabs.query({
'windowId': win.id,
'active': true
}, function(tabArray) {
// inject css & js only on initial click
chrome.tabs.executeScript(null, {
code : 'document.querySelector("body").classList.contains("_myExtension_code_injected")'
}, function(result) {
if (result && !result[0]) {
chrome.tabs.insertCSS(null, {
file: 'myExtension.css'
});
chrome.tabs.executeScript(null, {
file: 'myExtension.js'
}, function(){
chrome.tabs.executeScript(null, {
code: 'myExtension.init();'
});
});
}
});
});
});
Das Problem wird einige Websites mit zusätzlichem einem Popup-Fenster öffnen Information. Und die URL dieser Popup-Seite lautet "about:blank"
. Wenn ich versuche, die Erweiterung zu initialisieren, sehe ich diese Nachricht in der Konsole:
Unchecked runtime.lastError beim Ausführen von tabs.executeScript: Kann nicht auf Inhalte der URL "about: blank" zugreifen. Das Erweiterungsmanifest muss die Berechtigung zum Zugriff auf diesen Host anfordern.
Ich sehe keinen Weg, um eine "about:blank"
Seite der permissions
hinzuzufügen. Und ich möchte wirklich nicht anfangen, content_scripts
zu verwenden, nur damit ich die match_about_blank
Einstellung einstellen kann.
Ich habe versucht, "about:blank"
und "about:*
zum permission
hinzufügen und alles, was ich bekommen, ist ein Installationsfehler.
Beim Versuch, diese Erweiterung zu installieren, gab es Warnungen: Berechtigung 'about: *' ist unbekannt oder URL-Muster ist fehlerhaft.
Gibt es eine Lösung?
Aktualisierung: Here is a gist with everything you'll need. Ein Link zu einer Jsbin-Demo enthalten, aber das Problem ist nicht mit dieser Website speziell. Die Erweiterung wurde ursprünglich in einem Yahoo-Mail-Pop-Out-Fenster getestet, das Sie erhalten, indem Sie eine E-Mail drucken.
Sie können nicht überprüfen Sie die 'windows.location.href' Wert gegen' etwa: bLank', bevor Sie die Ausführung von Code? – Mathlight
Chrome verhindert die Code-Eingabe, da es eine Berechtigung benötigt. Ich habe den oben gezeigten Fehler eingefügt. – Mottie
Ich verstehe diesen Teil. Aber was ich meinte, war, wenn möglich, den Scheck um den Injektionsteil zu legen. (Ich weiß nicht genug davon, um sicher zu sein, wenn möglich) – Mathlight