chrome.tabs.executeScript: so bekommen Sie Zugriff auf variable von Inhalt Skript im hintergrund-Skript?
Wie man Zugriff auf variable app
vom Inhalt Skript app.js
im hintergrund script background.js
?
Hier ist, wie ich es versuchen (background.js
):
chrome.tabs.executeScript(null, { file: "app.js" }, function() {
app.getSettings('authorizeInProgress'); //...
});
Hier ist, was ich bekomme:
Hier ist manifest.json
:
{
"name": "ctrl-vk",
"version": "0.1.3",
"manifest_version": 2,
"description": "Chrome extension for ctrl+v insertion of images to vk.com",
"content_scripts": [{
"matches": [
"http://*/*",
"https://*/*"
],
"js": ["jquery-1.9.1.min.js"
],
"run_at": "document_end"
}],
"web_accessible_resources": [
"jquery-1.9.1.min.js"
],
"permissions" : [
"tabs",
"http://*/*",
"https://*/*"
],
"background": {
"persistent": false,
"scripts": ["background.js"]
}
}
Vollständigen code für die Beispiel bei github
https://github.com/MaxLord/ctrl-vk/tree/with_bug
- Ich war herausgefunden, was, wenn wir gehen am ersten argument als null zu executeScript() - das bedeutet, dass wir versuchen, starten Sie das Skript im aktuellen tab. Ist es natürlich nicht, wir wollen.. Wir brauchen derzeit einen Weg, wie man dieses verdammte tab s-id..
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zu vermeiden oben genannten Fehler verwenden Sie folgenden code,
statt
Erklärung
chrome://extensions/
Seite auch feuertchrome.tabs.onUpdated
Veranstaltung, zu vermeiden, fügen wir einen filter auf "alle überspringen" dev-tool-Seiten.executeScript()
Funktion zum Parsen der Wert des content-script..tab
variable? Ich bekommeUncaught ReferenceError: tab is not defined
tab
imonUpdated
Veranstaltung. Vielen Dank 🙂(Würde eingereicht habe, diese als Kommentar zu der Antwort akzeptiert, aber noch nicht über die nötigen Ruf)
Geben Sie auch die tabId chrome.tabs.executeScript als erstes argument übergeben wenn Sie es haben. Sonst riskieren Sie, Benutzerwechsel windows/tabs direkt nach dem anfordern einer URL und background.js dabei executeScript gegen die falsche Seite.
Zwar ziemlich offensichtlich, im Nachhinein, es warf mich für eine Schleife, wenn ich die gleiche Fehlermeldung "kein Zugriff auf Inhalt der url "chrome-devtools://.." obwohl mein chrome.tabs.onUpdated eventhandler war die überprüfung, dass die Seite Benutzer angefordert hatte einigen bestimmten domain-Namen-kurz vor dem executeScript nennen.
Also im Hinterkopf behalten, chrome.tabs.executeScript(null,..) läuft das Skript im aktiven Fenster, auch wenn das aktive Fenster sein könnte-developer-tools-Inspektor.
Sollten wir feststellen, dass in der manifest-cofig:
in der "Spiele" - Teil, nur http, https abgestimmt sind, so dass, wenn Sie laden Sie Ihre extension in der Seite wie: "chrome://extensions/"oder" file:///D:xxx", dass Fehler auftreten werden.
Können Sie laden Sie Ihre Erweiterung in die Seite mit der url 'http://'; oder weitere Regeln hinzufügen, die in Ihrer 'Spiele' array.