Ich habe Probleme beim Laden und Ausführen von externen js-Skript in meine Chrome-Erweiterung. Sieht genauso aus wie this question, aber ich kann immer noch nicht herausfinden, warum es in meinem Fall nicht funktioniert.Chrome-Erweiterung: Laden und Ausführen von externen Skript
Die Idee ist, dass ich in meinem Inhaltsskript eine Standardfunktion haben möchte, die einen Webseiteninhalt analysieren soll. Und für einige spezifische Webseiten möchte ich spezielle Parser laden und benutzen, also versuche ich, das richtige js-Skript für eine Wep-Seite zu laden, und dieses Skript sollte die Funktionalität des Standard-Parsers erweitern.
Inzwischen versuche ich nur Code von einem externen Skript ausführen, aber solche Fehler haben: Unchecked runtime.lastError while running tabs.executeScript: No source code or file specified at Object.callback
Das ist mein manifest.json:
{
"name": "Extension name",
"version": "1.2",
"description": "My chrome extension",
"browser_action": {
"default_popup": "popup.html",
},
"content_scripts": [{
"css": [
"style.css"
],
"js": [
"bower_components/jquery/dist/jquery.js",
"bower_components/bootstrap/dist/js/bootstrap.js",
"content.js"
],
"matches": ["*://*/*"]
}],
"web_accessible_resources": [
"frame.html",
"logo-48.png"
],
"icons": {
"16": "logo-16.png",
"48": "logo-48.png",
"128": "logo-128.png"
},
"permissions": [
"tabs",
"storage",
"http://*/",
"https://*/"
],
"manifest_version": 2
}
Dies ist Popup .html
<!doctype html>
<html>
<head>
<title>Title</title>
<script src="popup.js"></script>
</head>
<body>
<ul>
<li>Some link</li>
</ul>
</body>
</html>
Und in popup.js i ausführen Scrip wie folgt aus:
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
chrome.tabs.executeScript(tabs[0].id, {file: "http://127.0.0.1:8000/static/plugin/somesite.js"});
});
Was bin ich dong falsch, habe ich etwas verpasst? Oder sollte ich einen anderen Ansatz verwenden, um das Problem zu lösen?
Anmerkung (nicht mit Ihrem Fehler verbunden): '" http: // */"' stimmt NUR Top-Level-Seiten. Sie können entweder '" "' für eine breite Erlaubnis oder '" activeTab "' wenn Sie nur Zugriff auf die aktuelle Registerkarte benötigen. –
Xan
Gibt es einen Grund, warum Sie 'somesite.js' nicht in Ihre Erweiterung laden können? – Teepeemm
Zum Abfangen von lastError, siehe https://StackOverflow.com/a/45603880/632951 – Pacerier