我目前正在制作Chrome扩展程序,必须在网站中找到特定页面,特别是登录/登录页面,注册/注册页面, 关于页面和与我们联系页面。
我试图通过首先获取页面中的元素列表(我已经完成)来实现这一点。现在我需要检查元素的innerHTML,使其成为DOM中的叶节点并包含关键字的一部分,并且我正在尝试使用正则表达式执行此操作。我设法构建了一个正则表达式,它成功地返回元素的开始或结束标记之间的内容(即标记名称及其属性),但不是innerHTML。以下是我到目前为止所做的工作(以关于页面的示例:
var list = document.body.getElementsByTagName("*");
var aboutElement = /^[^<.+>].*About.*[^(<.+>]$/i;
for (var i = 0; i <= list.length; i++) {
if ((aboutElement.test(list[i].innerHTML)) || (aboutElement.test(list[i].alt))) {
list[i].click();
}
}
知道我应该添加什么,以便它只匹配叶节点(不包含其他节点的节点)而不是开始或结束标记中的内容?我也认为,由于。* 部分,我已经完成了它将匹配innerHTML中的所有内容,因此我可能还需要更改它。任何帮助将不胜感激!
答案 0 :(得分:0)
感谢评论中的两个答案,我设法解决了问题。我使用了.textContent
并更改了正则表达式,如下所示,并且有效。
var list = document.body.getElementsByTagName("*");
var aboutElement = /^(.*?\s*(\bAbout\b)[^$]*)$/i;
for (var i = 0; i <= list.length; i++) {
if ((aboutElement.test(list[i].textContent)) || (aboutElement.test(list[i].alt))) {
list[i].click();
}
}