Reputation: 85
I am trying to make a chrome extensions, that is started in one tab and continues to run while opening several new tabs. However, it only starts ONE new tab instead of the 5 specified because the script stops running.
function launch (url, name, callOnLoad) {
window.open(url, name)
.addEventListener(
"load",
callOnLoad,
{ once: true, passive: true }
);
}
async function launchProcess (taburl) {
const sleep3 = { then(resolve) { setTimeout(resolve, 250); } };
for (let i = 2; i < 7; ++i) {
launch(taburl, "tab" + i, proceed);
await sleep3;
}
}
launchProcess(taburl) //Taburl is acquired by running a chrome query to find the last active site.
The whole script:
function proceed (evt) {
console.log("A window has been loaded");
console.log(evt);
//End of execution
}
async function launchProcess (taburl) {
const sleep3 = { then(resolve) { setTimeout(resolve, 250); } };
for (let i = 2; i < 7; ++i) {
launch(taburl, "tab" + i, proceed);
await sleep3;
}
}
async function timer(time) { //timer() is only used if the user activates it, so you can ignore it atm
const sleep = { then(resolve) { setTimeout(resolve, 15000); } };
var date = new Date();
var timestamp = date.getTime();
timestamp = timestamp + 60000
while (time > timestamp) {
date = new Date();
timestamp = date.getTime();
timestamp = timestamp + 60000
await sleep;
}
const sleep2 = { then(resolve) { setTimeout(resolve, 250); } };
var excttimestamp = new Date();
while (time > excttimestamp) {
excttimestamp = new Date();
await sleep2;
}
launchProcess().then(console.log, console.error);
}
PS: If someone has some clues on how to make timer() more efficient, help is very welcomed :)
I expect the Function to "launch" multiple tabs and sleep, then opening another tab and running other not mentioned functions. Instead it only opens one and quits.
Upvotes: 1
Views: 1093
Reputation: 85
I found a solution for myself:
chrome.tabs.create({url: 'http://www.google.com', active: false});
opens a new tab over chrome but doesn't focus on it, so the popup stays and the code keeps running :)
Upvotes: 3