如何实现网页中'TEST'出现超2次时触发alert弹窗提醒
实现「关键词出现超2次才触发提醒」功能
你原有代码的问题是:/TEST/i.test()仅会返回布尔值,代表页面中是否存在至少1个TEST,无法统计具体出现次数,因此无法满足次数阈值判断的需求,以下是可直接落地的实现方式:
方案1:正则全局匹配(推荐)
通过全局+忽略大小写的正则匹配正文内所有关键词,根据匹配结果的数量判断是否触发弹窗,该方案不会漏判大小写不同的同名单词,同时避免统计HTML标签、属性内的非可见内容:
// 匹配页面可见正文中所有TEST(不区分大小写) const matchList = document.body.innerText.match(/TEST/gi); // 匹配到内容且数量超过2时触发提醒 if (matchList && matchList.length > 2) { alert("Word found!"); }
方案2:字符串分割计数(基于你验证通过的逻辑改造)
你测试可用的split计数逻辑可直接适配页面场景,如果需要支持忽略大小写,先将页面文本统一转为大写/小写再处理即可:
// 统一转大写避免大小写漏判 const pageContent = document.body.innerText.toUpperCase(); // 注意:split返回数组长度 = 关键词出现次数 + 1,需要做偏移计算 if (pageContent.split("TEST").length - 1 > 2) { alert("Word Found"); }
注意事项:如果使用
document.body.innerHTML做匹配统计,会把HTML标签属性、代码注释里的TEST字符串也算入统计结果,如果仅需要统计用户可见的正文内容,优先使用document.body.innerText取值。
内容的提问来源于stack exchange,提问作者Vicky Lahkar
相关产品推荐
相关产品推荐

