gpt4 book ai didi

JavaScript window.find 绝对不起作用

转载 作者:行者123 更新时间:2023-11-29 22:21:01 24 4
gpt4 key购买 nike

当我尝试传递分布在几个 block 元素中的文本时,window.find 方法起作用:

HTML:

<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
</head>
<body>
<p>search me</p><b> I could be the answer</b>
</body>
</html>

JavaScript:

window.find("meI could be");

或者:

str = "me";
str+= "\n";
str+="I could be t";

window.find(str);

这发生在 <p>搜索词之间存在元素。

我该如何解决?

最佳答案

作为选项:

function containsStr(str) {
return document.body.innerText.indexOf(str) > -1;
}

刚刚对其进行了测试,它的工作原理与 window.find 相同。或者 window.find 的工作方式与我的功能相同。无论如何,这似乎取决于元素的 style.display 属性。例如。当我设置

p {
display: inline;
}

此调用 window.find("me I could be") 为您的 HTML 示例返回 true

我创建了 this example测试提到的行为。
作为选项,您可以在内存中创建一个 div 元素,获取 document.body.innerHTML 并将检索到的值设置为 div 的 innerHTML,然后更改 style.dysplay"inline" 以查找此 div 中的元素,类似于我在我的代码示例中所做的,然后执行搜索。

更新 #1:jQuery

我进行了更深入的研究,发现使用 jQuery :contains 选择器比我以前的函数和 window.find 效果更好,但可能更昂贵(不确定,需要已测试)。

function containsStr$(str) {
return $('body:contains("'+str+'")').length > 0;
}

更新 #2:纯 JavaScript 解决方案

function _find(str) {
var div = document.createElement('div');
div.innerHTML = document.body.innerHTML;
var elements = div.getElementsByTagName('*');
for(var i = elements.length; 0 > i--;) {
elements[i].style.display = 'inline';
}
return (div.innerText || div.textContent).indexOf(str) > -1;
}

关于JavaScript window.find 绝对不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12445020/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com