如何修改JavaScript代码实现多文本匹配时触发弹窗提示?
解决多文本检测的修改方案
首先你原来的多文本写法是语法错误的,var LookFor = "HELLO","World","Fox","Number"; 这种写法实际上只会把最后一个值"Number"赋值给LookFor,前面的都会被忽略。正确的做法是把目标文本放在数组里。
下面是修改后的完整代码,同时修正了原代码里的拼写错误(比如fond应该是found,alert里的字符串没加引号的问题):
window.addEventListener('load', function() { setTimeout(function(){ console.log("Page loaded."); // 把要检测的文本放在数组里 var lookForTexts = ["HELLO", "World", "Fox", "Number"]; var content = document.body.textContent || document.body.innerText; // 使用some()方法遍历数组,只要有一个文本存在就返回true var hasTargetText = lookForTexts.some(text => content.indexOf(text) !== -1); if(hasTargetText) { console.log("Target text found!"); alert("Target text found!"); } else { console.log("No target text found, reloading page."); location.reload(); } }, 3000); });
关键修改点说明:
- 数组存储目标文本:用
["HELLO", "World", "Fox", "Number"]这种数组格式来存放所有需要检测的文本,这样才能遍历检测每一个。 - 使用
some()方法:Array.some()会遍历数组中的每个元素,只要有一个元素满足content.indexOf(text) !== -1(即文本存在于页面内容中),就会立即返回true,不需要遍历完所有元素,效率更高。 - 修正拼写和语法错误:原代码里的
fond是拼写错误,改成found;alert(Text fond)缺少引号,改成alert("Target text found!")避免报错。
内容的提问来源于stack exchange,提问作者Rafael Yépez
相关产品推荐
相关产品推荐

