Передача параметров в скрипты контента, внедренные с помощью 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