it-swarm.com.de

Google Chrome-Erweiterung - Skriptspritzen

Ich versuche, meine Chrome-Erweiterung dazu zu bringen, Javascript mit content_scripts zu injizieren, wobei dieses vorherige answer als Referenz dient. 

manifest.json

"name": "My Chrome Extension",
"version": "1.0",
"manifest_version": 2,
"content_scripts": [{
    "matches": ["http://pagetoinject/script/into/*"],
    "js": ["contentscript.js"]
}]  

contenscript.js:

var s = document.createElement('script');
s.src = chrome.extension.getURL("script.js");
(document.head||document.documentElement).appendChild(s);
s.parentNode.removeChild(s);

(versuchte auch 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 Screenshot .

enter image description hereGET chrome-extension://invalid/ (anonymous function)

38
Nick Fury
  1. In Ihrer Manifestdatei ist "manifest_version": 2 angegeben. Dadurch wird automatisch ein strengerer Modus aktiviert, in dem alle Erweiterungsdateien standardmäßig nicht für Webseiten verfügbar sind.
  2. Ihr ursprünglicher Code würde niemals funktionieren, da das <script>-Element sofort nach der Injektion entfernt wird (die Skriptdatei hat keine Möglichkeit zu laden).

Als Ergebnis von 1. wird der folgende Fehler in der Konsole angezeigt:

Failed to load resource                             chrome-extension://invalid/

Um das Problem zu beheben, fügen Sie der Whitelist script.js hinzu, "web_accessible_resources" in Ihrem manifest file:

{
 "name": "Chrome-Erweiterung", 
 "version": "1.0", 
 "manifest_version": 2, 
 "content_scripts": [{
 "passt": ["http: // pagetoinject/script/in/*"], 
 "js": ["contentscript.js"] 
 }], 
 "web_accessible_resources": ["script.js"]
}
86
Rob W

Zusätzlich zu den obigen Antworten stelle ich fest, dass Sie in Ihrem contentscript.js nur ein weiteres Skript hinzufügen, d. H. script.js. Warum fügen Sie script.js nicht direkt durch content_scripts in manifest.json hinzu.

1
Abhishek Deora

Ein weiterer Grund für diesen Fehler ist, wenn die URL von CORS blockiert wird. Überprüfen Sie den Netzwerkanforderungsheader der Seite, um zu sehen, ob sie Content-Security-Policy enthält:

Content-Security-Policy: default-src 'self' http://example.com; connect-src http://example.com/; script-src http://example.com/

Sie können versuchen, die URL in einer neuen Browserregisterkarte zu öffnen, um sicherzustellen, dass die URL des Bildes korrekt ist:

chrome-extension://mjcbjlencnokpknflpneebajalcnnifo/images/pattern.jpg

Eine Möglichkeit, dies zu umgehen, besteht in der Verwendung eines URI für Bilddaten:

data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7
0
Kim T