«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как передать параметры в скрипты контента, внедренные с помощью `chrome.tabs.executeScript()`?

Как передать параметры в скрипты контента, внедренные с помощью `chrome.tabs.executeScript()`?

Опубликовано 7 ноября 2024 г.
Просматривать:798

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

Передача параметров в скрипты контента, внедренные с помощью chrome.tabs.executeScript()

При внедрении файла скрипта контента с помощью chrome.tabs.executeScript() ({file: "content.js"}), возникает распространенный вопрос: как передать параметры в JavaScript в файле сценария содержимого?

Ошибка передачи параметров

Важно уточнить, что вы не можете напрямую передавать параметры в файл. Вместо этого у вас есть два варианта реализации этой функциональности:

1. Установка параметров перед выполнением файла

Вставка вызовов chrome.tabs.executeScript для определения переменных перед внедрением файла:

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

Для сложных переменных рассмотрите возможность использования 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'});
});

В content.js вы можете получить доступ к этим переменным:

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

2. Установка параметров после выполнения файла

Сначала выполните файл, затем используйте API передачи сообщений для отправки параметров:

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

В content.js прослушивайте эти сообщения с помощью chrome.runtime.onMessage и обрабатывайте сообщение:

chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
    // Handle message.
    // In this example, message === 'whatever value; String, object, whatever'
});
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3