如何为所有标签重复此代码? Chrome扩展程序

时间:2016-06-07 11:54:11

标签: javascript google-chrome google-chrome-extension

当我点击popup.html上的按钮时,我正在尝试构建一个运行以下内容的chrome扩展程序:

  1. 逐个获取并读取每个标签的网址
  2. 如果网址以" https://www.linkedin.com/company/"开头,则获取 公司ID"公司/"。 (网址通常如下所示: https://www.linkedin.com/company/164233?trk=prof-exp-company-name所以 在这种情况下,例如,我想得到" 164233")然后呢 应该使用以下网址创建一个新标签: https://www.linkedin.com/vsearch/p?f_CC=164233
  3. 以下代码仅成功执行我想要的当前选项卡。当我点击“btn2'”时,我希望扩展程序为所有标签执行此操作。

    我该如何重复?有一个for循环?谢谢!

    document.addEventListener('DOMContentLoaded', function (){
            document.getElementById('btn2').addEventListener('click', printurl)
    });
    
    printurl = function(){
    chrome.tabs.query({
        active: true,
        lastFocusedWindow: true
    }, function(tabs) {
    
    
        // and use that tab to fill in out title and url
        var query = tabs[0].url;
        var companyId = query.slice(33, 41);
        var companyId2 = companyId.replace( /\D/g, '');
    
        saeurl = 'https://www.linkedin.com/sales/search?pivotType=EMPLOYEE&pivotId=' + companyId2;
        chrome.tabs.create({url: saeurl, selected:false})
    
    })
    }
    

1 个答案:

答案 0 :(得分:0)

如果我已经理解了您要正确执行的操作,则需要进行一些更改。首先,如果您想要所有标签,那么您不想查询activelastFocusedWindow

修复该问题后,您应该获得所有标签,此时您需要为tabs中的每个标签完成逻辑。

chrome.tabs.query({}, function(tabs) {

    for(var i = 0; i < tabs.length; i++) {
        // and use that tab to fill in out title and url
        var query = tabs[i].url;
        var companyId = query.slice(33, 41);
        var companyId2 = companyId.replace( /\D/g, '');

        saeurl = 'https://www.linkedin.com/sales/search?pivotType=EMPLOYEE&pivotId=' + companyId2;
        chrome.tabs.create({url: saeurl, selected:false})
    }

})

还有必要考虑用于从URL中提取公司ID的逻辑。您当前的逻辑依赖于ID的长度,ID可能会发生变化。看一下this gist,它显示了几种不同的解析URI方式。