let backgroundPage = browser.extension.getBackgroundPage(); let data; let i=0; data = readUrl() .then(function(data){ browser.browserAction.onClicked.addListener(function(event1){ browser.tabs.create({"url": "home.html"},function(tab){ browser.runtime.onMessage.addListener(function(request,sender,sendResponse){ handleMessages(request,sender,sendResponse,tab,data); }); }); }); }); function handleMessages(message,sender,sendResponse,tab,data){ if(message.state === "Button_clicked") { browser.tabs.executeScript(tab.id,{ file:"spawn.js" }); console.log(tab); console.log(data); } else if(message === "Content_Loaded") { console.log("Background: Received Content_Loaded"); // nextUrl(data,tab,i); if(i===0) { browser.tabs.sendMessage(tab.id,"Init"); } else { browser.tabs.sendMessage(tab.id,data.subscriptions[i].url); } console.log(i); } else if(message === "finished") { i++; console.log("background: received next from spawn.js"); browser.tabs.update(tab.id,{url : data.subscriptions[i].url}); browser.tabs.executeScript(tab.id,{ file:"spawn.js" }); browser.tabs.sendMessage(tab.id,data.subscriptions[i].url); } } function readUrl() { let data; return new Promise(resolve => { const filePath = "newpipe_subscriptions_202403101004.json"; var localURL = browser.extension.getURL(filePath); fetch(localURL).then((res) => { if(!res.ok){ throw new Error (`res error`); } return res.json(); }) .then((data) => { for(let i=0;i console.error("couldnt fetch data",error)); }); }