"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como passo parâmetros para scripts de conteúdo injetados com `chrome.tabs.executeScript()`?

Como passo parâmetros para scripts de conteúdo injetados com `chrome.tabs.executeScript()`?

Publicado em 2024-11-07
Navegar:548

How Do I Pass Parameters to Content Scripts Injected with `chrome.tabs.executeScript()`?

Passando parâmetros para scripts de conteúdo injetados com chrome.tabs.executeScript()

Ao injetar um arquivo de script de conteúdo usando chrome.tabs.executeScript ({file: "content.js"}), surge uma pergunta comum: como passar parâmetros para o JavaScript dentro do arquivo de script de conteúdo?

Parameter Passing Fallacy

É importante esclarecer que você não pode passar parâmetros diretamente para um arquivo. Em vez disso, você tem duas opções para obter essa funcionalidade:

1. Configurando parâmetros antes da execução do arquivo

Aninhe chamadas chrome.tabs.executeScript para definir variáveis ​​antes de injetar o arquivo:

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

Para variáveis ​​complexas, considere usar JSON.stringify para converter um objeto em uma string:

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

Em content.js, você pode acessar estas variáveis:

// content.js
alert('Example:'   config);

2. Configurando parâmetros após a execução do arquivo

Execute o arquivo primeiro e, em seguida, use a API de passagem de mensagens para enviar parâmetros:

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

Em content.js, ouça essas mensagens usando chrome.runtime.onMessage e lide com a mensagem:

chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
    // Handle message.
    // In this example, message === 'whatever value; String, object, whatever'
});
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3