Я отправляю сообщение в скрипт контента в расширении браузера, которое я создаю. Затем мне нужно иметь значение, которое извлекает скрипт контента, отправленный обратно во всплывающее окно. Я знаю, что скрипт содержимого может найти значение, которое я запрашиваю, поскольку он печатает, когда я console.log
значение. Однако я не могу заставить его вернуть это значение.
Основные настройки c, которые у меня есть для кода, следующие:
// popup.js
valueOnWebpage = browser.tabs.query({active: true, currentWindow: true})
.then(updateLabelInPopup)
.catch(printError);
function updateLabelInPopup(tabs) {
browser.tabs.sendMessage(tabs[0].id, {command: "getValueFromWebpage"})
.then(function (result) {
console.log("Result: " + result); // this is logging `"Result: undefined"`
document.getElementById("id-of-element-in-popup").innerHTML = result;
}).catch(function (err) {
console.log("ERROR: ", err);
});
}
// content_script.js
function getValueFromWebpage() {
return document.getElementById("id-of-element-value-i-want").innerText;
}
browser.runtime.onMessage.addListener((message) => {
if (message.command === "getValueFromWebpage") {
valueFromPage = getValueFromWebpage();
console.log("Ran by message listener ", valueFromPage); // This is in fact logging what I want
return valueFromPage; // I want this so that I can do something with it in the popup
} else {
return "Not a recognized command";
}
});