Übergabe von Parametern an Inhaltsskripte, die mit chrome.tabs.executeScript() eingefügt werden
Beim Einfügen einer Inhaltsskriptdatei mit chrome.tabs.executeScript ({file: „content.js“}) stellt sich häufig die Frage: Wie werden Parameter an JavaScript innerhalb der Inhaltsskriptdatei übergeben?
Fehler bei der Parameterübergabe
Es ist wichtig klarzustellen, dass Sie Parameter nicht direkt an eine Datei übergeben können. Stattdessen haben Sie zwei Möglichkeiten, diese Funktionalität zu erreichen:
1. Festlegen von Parametern vor der Dateiausführung
Nest chrome.tabs.executeScript-Aufrufe zum Definieren von Variablen vor dem Einfügen der Datei:
chrome.tabs.executeScript(tab.id, {
code: 'var config = 1;'
}, function() {
chrome.tabs.executeScript(tab.id, {file: 'content.js'});
});
Erwägen Sie bei komplexen Variablen die Verwendung von JSON.stringify, um ein Objekt in einen String zu konvertieren:
var config = {somebigobject: 'complicated value'};
chrome.tabs.executeScript(tab.id, {
code: 'var config = ' JSON.stringify(config)
}, function() {
chrome.tabs.executeScript(tab.id, {file: 'content.js'});
});
In content.js können Sie auf diese Variablen zugreifen:
// content.js
alert('Example:' config);
2. Festlegen von Parametern nach der Dateiausführung
Führen Sie zuerst die Datei aus und verwenden Sie dann die Nachrichtenübermittlungs-API, um Parameter zu senden:
chrome.tabs.executeScript(tab.id, {file: 'content.js'}, function() {
chrome.tabs.sendMessage(tab.id, 'whatever value; String, object, whatever');
});
In content.js mit chrome.runtime.onMessage auf diese Nachrichten warten und die Nachricht verarbeiten:
chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
// Handle message.
// In this example, message === 'whatever value; String, object, whatever'
});
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3