如何搜索网页上的文本是否与数组中的数据匹配?

问题描述

假设我在浏览器中打开了一个网页,其中包含以下源代码

<html>
<body>
<p>aaa</p>
<h1>yyy</h1>
<b>ccc</b>
</body>
</html>

我有一个Greasemonkey脚本,该脚本具有如下定义的Javascript数组:

var array = ['aaa','bbb','ccc','asds'];

使用JavaScript或JQuery,如何搜索网页的整个文本以检查页面上的任何文本是否与数组中的任何文本匹配,而又不知道该文本可能驻留在哪个元素或类中?

解决方法

希望我能对您有所帮助

版本1

use std::any::Any;
use std::sync::Arc;
use std::sync::Mutex;
fn print_if_mutex(value: Arc<dyn Any + Send + Sync>) {
    if let Ok(mutex) = value.downcast::<Mutex<String>>() {
        if let Ok(string) = mutex.lock() {
            println!("String ({}): {}",string.len(),string);
        }
    }
}

fn main(){
    let my_string = "Hello World".to_string();
    print_if_mutex(Arc::new(Mutex::new(my_string)));
    print_if_mutex(Arc::new(0i8));
}
var array = ['aaa','bbb','ccc','ddd','asds'];
var x = document.body.innerText;

array.forEach(y => {
    if (x.indexOf(y) > -1) {
        console.log(y);
    }
});

版本2

<p>aaa</p>
<h1>yyy</h1>
<b>ccc</b>
<p><h2>ddd</h2></p>
var array = ['aaa','asds'];
var x = document.body.children;

for (var i = 0; i < array.length; i++) {
    for (var ii = 0; ii < x.length; ii++) {
        if(array[i] === x[ii].innerText) {
            console.log(x[ii]);
        }
    }
}