javascript - 更新 Chrome 扩展中的选项卡并等待它打开以打开另一个下载链接。如何等到 url 在选项卡中打开?

标签 javascript google-chrome google-chrome-extension

我想一个一个打开 100 个链接,等到每个链接都打开,这样我就可以从中下载数据。如何等到 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);
    }); 

最佳答案

使用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();
      }
    });
  });
}

关于javascript - 更新 Chrome 扩展中的选项卡并等待它打开以打开另一个下载链接。如何等到 url 在选项卡中打开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52451031/

相关文章:

javascript - 混合代码错误

javascript - 通过 JavaScript 更改时,HTML 标签将不接受我的 CSS 类

google-chrome - Chrome 开发者工具 - 网络 - 如何仅过滤 POST 和 PATCH 请求?

cordova - 使用 cordova-plugin-file 时,chrome 中永远不会触发 filePluginIsReady 事件

javascript - 通过开发人员工具检查页面中的所有复选框

javascript - 在 Firefox Webextension Contentscript 中使用 fontawesome

javascript - 以闭包方式在javascript中乘以3个数字

javascript - Three.js 中的类型错误 : DAT is undefined when using DAT. gui()

javascript - XMLHttpRequest 在 Chrome 扩展中修改了 Accept header

google-chrome - 几秒钟后阻止chrome.notifications API隐藏我的通知