获取chrome扩展中的所有链接

时间:2018-07-01 23:13:50

标签: javascript google-chrome-extension

我正在尝试进行扩展,以从用户所在的网页收集社交网络链接。因此,当用户单击按钮getLinks时,我们将获得所有链接,然后通过检查在扩展块中传递条件的条件。我尝试使用chrome.tabs.executeScript,并通过urls = $$('a');获取链接,但是它不起作用

 $('#getLinks').click(function(e)
{
    var allLinks = [];
    var i = 0;
    chrome.tabs.executeScript( null, {"code": "urls = $$('a'); for (url in urls)
    { allLinks[i]=urls[url].href; i++;}"}, function() {
        var vk;
        var facebook;
        var linkedin;
        for (var i=0; i<allLinks.length; i++) 
        {
            var profil = (allLinks[i].href);
            if(profil.indexOf('vk.com')!=-1)
            {
                vk = profil;
                $('#vk').text(vk);
            }
            if(profilito.indexOf('facebook.com')!=-1)
            {
                facebook = profil;
                $('#fb').text(facebook);
            }
            if(profilito.indexOf('linkedin.com')!=-1)
            {
                linkedin = profil;
                $('#linkin').text(linkedin);
            }
        }
    });
});

2 个答案:

答案 0 :(得分:1)

这不是executeScript的使用方式。该代码无法访问变量allLinksi,因为它是在其他位置执行的。但是您可以像其他SO question一样利用该代码的返回值:

$('#getLinks').click(function(e) {
    chrome.tabs.executeScript( null, {"code": "var urls = document.querySelectorAll('a'); for(var i = 0; i < urls.length; i++) { urls[i] = urls[i].href; }; urls"}, function(results) {
        var allLinks = results[0];

        // use allLinks here
    });
});

答案 1 :(得分:1)

所以最后我得到了关于自己问题的答案,并在此处发布了解决方案

$('#getUser').click(function(e) {
chrome.tabs.executeScript(null,{code: 'Array.from(document.getElementsByTagName("a")).map(a => a.innerHTML)'},function (results){
    var vk = [];
    var facebook = [];
    var linkedin = [];
    var allElements = results[0];
    for (var i=0; i<allElements.length; i++) 
    {
    if (allElements[i].indexOf("https://vk.com") !== -1) 
    {
        vk.push (allElements[i]);
    }
    if (allElements[i].indexOf("https://facebook.com") !== -1 ) 
    {
        facebook.push (allElements[i]);
    }
    if (allElements[i].indexOf("https://www.linkedin.com") !== -1 ) 
    {
        linkedin.push (allElements[i]);
    }
    }
});

我们在页面上找到的所有链接均属于社交网络,分为3个数组