如果锚文本包含关键字,则自动单击链接

时间:2018-08-29 07:04:07

标签: javascript

我正在寻找一个纯Javascript实现。

在页面加载时,如果关键字是锚文本的一部分,我想自动单击链接。

db.content.aggregate([
  {$match: {cid:8144974}}
 ,{$addFields: {'getrandom': Math.random()}}
  ,{$limit:20}
  ])

我想自动单击带有鸭字的链接。

1 个答案:

答案 0 :(得分:1)

您可以获取文本,然后调用String.includes来检查关键字是否存在。

document.addEventListener("DOMContentLoaded", function() {

  Array.from(document.querySelectorAll('a')).forEach(function(node) {
    node.addEventListener("click", function() {
      console.log(this.text);
    });
  });

  function matchKeywordsAgainstLinkText(keyword) {
    Array.from(document.querySelectorAll('a')).forEach(function(node) {
      if (node.text.trim().includes(keyword)) {
        node.click()
      }
    });
  }

  matchKeywordsAgainstLinkText('Duck');
});
<a href="#"> The Dog Barks </a>
<a href="#"> The Duck Quacks </a>
<a href="#"> The Bird Chirps </a>

我使用的方法的链接:

querySelectorAll:一个静态(非实时)NodeList,代表与指定选择器组匹配的文档元素列表。

Array.from():方法从类似数组的对象中创建一个新的,浅表复制的Array实例,在这种情况下,其返回值为document.querySelectorAll('a')

使用forEach循环,我们迭代所有匹配的元素,并获取每个匹配的锚链接的文本,并比较关键字是否在文本中作为子字符串出现。如果匹配,我们会调用click()来模拟鼠标单击事件。

要进行不区分大小写的搜索,请使用test方法。

function matchKeywordsAgainstLinkText(keyword) {
  var regex = new RegExp(keyword, 'i')
  Array.from(document.querySelectorAll('a')).forEach(function(node) {
    if (regex.test(node.text.trim())) {
      node.click()
    }
  });
}