var s = document.createElement('script');
s.src = chrome.extension.getURL("script.js");
(document.head||document.documentElement).appendChild(s);
s.parentNode.removeChild(s);
(auch probiert Dies Methode ohne Erfolg. )
var s = document.createElement('script');
s.src = chrome.extension.getURL("script.js");
s.onload = function() {
this.parentNode.removeChild(this);
};
(document.head||document.documentElement).appendChild(s);
Ich bekomme immer diesen Javascript-Fehler. Hier ist ein Bildschirmfoto.
GET chrome-extension://invalid/
(anonymous function)
Ich bin mir nicht sicher, was passiert, aber warum machst du nicht stattdessen Folgendes: "js": ["contentscript.js","script.js"]
– Derek 朕會功夫
10. Mai 2012 um 5:49 Uhr
Da content_scripts werden in einer isolierten Umgebung ausgeführt. Ich muss die spritzen script.js in das DOM, damit ich diese Datei verwenden kann, als wäre sie Teil des öffentlichen js-Ordners. Es wird im ersten Abschnitt dieser Antwort erklärt
– Nick Fury
10. Mai 2012 um 6:04 Uhr
Diese Antwort macht das, was Sie im Inhaltsskript versuchen. Es könnte sein, wonach Sie suchen.
– Sparragus
17. Mai 2012 um 0:48 Uhr
Rob W
In Ihrer Manifestdatei "manifest_version": 2 angegeben. Dadurch wird automatisch ein strengerer Modus aktiviert, in dem standardmäßig nicht alle Dateien der Erweiterung für Webseiten verfügbar sind.
Ihr ursprünglicher Code würde niemals funktionieren, weil die <script> -Element wird sofort nach der Injektion entfernt (die Skriptdatei kann nicht geladen werden).
Als Ergebnis von 1. erscheint der folgende Fehler in der Konsole:
Failed to load resource chrome-extension://invalid/
Um das Problem zu beheben, fügen Sie hinzu script.js auf die Whitelist, "web_accessible_resources" in deiner manifest file:
Danke für die tolle Antwort alles hat genau so funktioniert wie beschrieben. Auch danke für den Originalcode von hier
– Nick Fury
10. Mai 2012 um 18:54 Uhr
aber gibt es eine Möglichkeit, eine Eigenschaft von zu ändern window aus einem Skript, das auf diese Weise (oder auf andere Weise) eingefügt wurde?
– Jakow L
7. Februar 2020 um 13:01 Uhr
Ich habe viel versucht, aber dies ist die einzige Antwort, die für mich funktioniert
– Hiệp Nguyễn
26. April 2020 um 18:34 Uhr
Zusätzlich zu den obigen Antworten merke ich das in Ihrer contentscript.js Sie fügen nur ein weiteres Skript hinzu, dh script.js Warum fügst du nicht direkt hinzu script.js durch content_scripts in manifest.json.
Ein weiterer Grund für diesen Fehler ist, wenn die URL von CORS blockiert wird. Überprüfen Sie den Netzwerkanforderungs-Header der Seite, um festzustellen, ob er Content-Security-Policy enthält:
Das Problem hier ist, dass Sie verwenden manifest_version : 2. Wenn du das schaffst manifest-version: 1 du wirst keine probleme haben. Version 2 schränkt viele dieser Funktionen ein, um die Sicherheit zu verbessern. Verweisen Inhaltssicherheitsrichtlinie von Google für weitere Details zu den Einschränkungen, die in Manifest-Version 2 auferlegt werden. Ich konnte Ihren speziellen Fall nicht finden, der im CSP erwähnt wurde, aber als ich die Manifest-Version auf 1 geändert und Ihren Code ausgeführt habe, funktioniert es einwandfrei.
Ich bin mir nicht sicher, was passiert, aber warum machst du nicht stattdessen Folgendes:
"js": ["contentscript.js","script.js"]
– Derek 朕會功夫
10. Mai 2012 um 5:49 Uhr
Da
content_scripts
werden in einer isolierten Umgebung ausgeführt. Ich muss die spritzenscript.js
in das DOM, damit ich diese Datei verwenden kann, als wäre sie Teil des öffentlichen js-Ordners. Es wird im ersten Abschnitt dieser Antwort erklärt– Nick Fury
10. Mai 2012 um 6:04 Uhr
Diese Antwort macht das, was Sie im Inhaltsskript versuchen. Es könnte sein, wonach Sie suchen.
– Sparragus
17. Mai 2012 um 0:48 Uhr