[英]Update Tab in Chrome Extension And Wait Till It opened to open another download link. How to wait till url is opened in the tab?
I want to open 100 links one by one and wait till each one is opened so that i can download data from it.我想一个一个打开100个链接,等到每个链接都打开,这样我就可以从中下载数据了。 How to wait till URL is opened in the tab?如何等到 URL 在选项卡中打开?
function downloadreport()
{
chrome.tabs.getSelected(null,function(tab)
{
var reportlink=tab.url;
looplink=tab.url.slice(0,tab.url.length-1);
var indexcode=reportlink.indexOf('code')
reportlink=reportlink.slice(0,indexcode+4)+"/getReport.php";
var i;
for (i=0;i<100;i++)
{
chrome.tabs.update(tab.id,{url: looplink+i});
/*
How To Wait Here Till Tab Is Opened
*/
chrome.tabs.update(tab.id,{url: reportlink});
}
});
}
document.addEventListener('DOMContentLoaded', function () {
document.getElementById('start').addEventListener('click',downloadreport);
});
Use async/await , WebExtension polyfill , Promise , and tabs.onUpdated listener:使用async/await 、 WebExtension polyfill 、 Promise和tabs.onUpdated监听器:
async function downloadreport() {
const [tab] = await browser.tabs.query({active: true, currentWindow: true});
let reportLink = tab.url.slice(0, tab.url.indexOf('code') + 4) + '/getReport.php';
let loopLink = tab.url.slice(0, -1);
for (let i = 0; i < 100; i++) {
await goToUrl(tab, loopLink + i);
await goToUrl(tab, reportLink);
}
}
function goToUrl(tab, url) {
browser.tabs.update(tab.id, {url});
return new Promise(resolve => {
browser.tabs.onUpdated.addListener(function onUpdated(tabId, info) {
if (tabId === tab.id && info.status === 'complete') {
browser.tabs.onUpdated.removeListener(onUpdated);
resolve();
}
});
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.