This is in a background script. Everything seems to work down to the result, but my list variable seems to be empty no matter where I declare it in the scope. How do I use sendResponse to get the data back to my content script? What am I missing?
chrome.runtime.onMessage.addListener(
function (request, sender, sendResponse) {
list = [];
// list available channels
if (request.action.includes("channels")) {
function inContent() {
let elems = document.getElementsByClassName("name-sec");
let channelsList = [];
for (let ii = 0; ii < elems.length; ii++) {
let channel = elems[ii];
channelsList.push(channel.innerText);
}
return channelsList;
}
chrome.tabs.executeScript({ code: `(${inContent})()` }, function (result) {
list = result[0];
});
// list is empty
sendResponse({action: `Channels List:${"\n"}${list.join("\n")}`})
}
}
);