Maison  >  Article  >  interface Web  >  Comment transmettre des paramètres aux scripts de contenu injectés avec Chrome.tabs.executeScript() ?

Comment transmettre des paramètres aux scripts de contenu injectés avec Chrome.tabs.executeScript() ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-28 18:09:29135parcourir

How to Pass Parameters to Injected Content Scripts with Chrome.tabs.executeScript()?

Passer des paramètres aux scripts de contenu injectés avec Chrome.tabs.executeScript()

La méthode chrome.tabs.executeScript() permet d'injecter Fichiers JavaScript dans le contenu d'un onglet. Cependant, il ne fournit pas de moyen direct de transmettre des paramètres au script injecté.

Méthode 1 : définir les paramètres avant l'exécution

Une approche consiste à imbriquer chrome.tabs. ExecuteScript() appelle pour définir des variables avant d'exécuter le fichier JavaScript :

chrome.tabs.executeScript(tab.id, {code: 'var config = 1;'}, function() {
    chrome.tabs.executeScript(tab.id, {file: 'content.js'});
});

Les variables complexes peuvent être converties en chaînes à l'aide de JSON.stringify :

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'});
});

Dans le script de contenu (content. js):

alert('Example:' + config);

Méthode 2 : définir les paramètres après l'exécution

Alternativement, les paramètres peuvent être transmis après l'exécution du fichier JavaScript à l'aide de l'API de transmission de messages :

chrome.tabs.executeScript(tab.id, {file: 'content.js'}, function() {
    chrome.tabs.sendMessage(tab.id, 'whatever value; String, object, whatever');
});

Dans content.js :

chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
    // Handle message: message === 'whatever value; String, object, whatever'
});

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn