我正在寻找一个纯Javascript实现。
在页面加载时,如果关键字是锚文本的一部分,我想自动单击链接。
db.content.aggregate([
{$match: {cid:8144974}}
,{$addFields: {'getrandom': Math.random()}}
,{$limit:20}
])
我想自动单击带有鸭字的链接。
答案 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()
}
});
}