首页 > 解决方案 > 如何通过 className 从网站获取所有链接、拆分网站名称并存储在数组中

问题描述

我正在尝试从 Gmail 中获取所有链接并将它们存储在一个数组中。我试图让所有的电子邮件都这样存储 -

function gmailGetAllLinks(){
  var classname = document.getElementsByClassName('AO');
  var array1 = [];
  for(i=0;i<classname.length;i++){
      var str = classname[i].getElementsByTagName('a')[0].href;
      var res = str.split("?"); 
      array1.push(res[0]);

  }
  window.alert(array1)
  warningPopup()
}

当我尝试将数组打印出来时,phishingWebsites.append = array1;它只显示为空,而 dowindow.alert只显示第一个链接。

标签: javascriptgoogle-chrome-extension

解决方案


querySelectorAll('.AO a')使用它来定位所有这些锚点更简单。

然后您可以将该集合转换为数组并用于Array#map()获取结果

function gmailGetAllLinks(){
  const links = Array.from(document.querySelectorAll('.AO a')).map(link => {
      const url = new URL(link.href);
      url.search = '';
      return url.toString();
  })
  
 console.log(links)
}

gmailGetAllLinks()
.AO{ padding: 1em; border:2px solid #ccc; margin: 1em}
a{display: block; margin-bottom:1em}
<div class="AO">
  <a href="https://google.com?q=foo">Google</a>
  <a href="https://samsung.com?q=foo">Samsung</a>
</div>

<div class="AO">
  <a href="https://facebook?q=foo">Facebook</a>
  <a href="https://wikipedia.com?q=foo">Wikipedia</a>
</div>


推荐阅读