2013-05-14 114 views
5

让我们说字符串“完成成功”显示在网页的某处,有没有办法知道这个字符串是否仅使用javascript存在? 谢谢。Javascript:如何检查网页中是否存在文本

+0

不知道你是问什么,或者你尝试过什么...... – Neal 2013-05-14 18:17:55

+3

是有,但对于你想要做的事情来说,这可能不是最好的解决方案。解释您的完整问题以及您迄今为止尝试解决问题可能更有用。 – 2013-05-14 18:17:59

+3

本网站的目的是帮助您修复您编写的代码。第一部分是你需要编写代码。认识我们有办法。 – Cam 2013-05-14 18:18:50

回答

24

更多详细信息将有所帮助。可能有更好的方法。但是,这是您所提供的最好给出什么样的信息:

if (
    (
    document.documentElement.textContent || document.documentElement.innerText 
).indexOf('Done successfuly') > -1 
) { 
    // Do something... 
} 

如果你知道ID或类名或其它方式选择直接包含文本的元素(如h1#someHeading span ...)那么你或许应该这样做因为它会更高效并且通常是更清洁的方法。

编辑值得注意的是:这种方法也会在SCRIPT和STYLE标签中选取文本,这可能不是您想要的。 textContentinnerText在浏览器中也有各种各样的怪癖。 See this for more info

+0

正常工作,谢谢:) – Sam 2013-05-14 18:30:49

+0

@ user2348365如果这回答你的问题,使用左边的复选标记来表明这一点。感谢回答者并保持网站清洁。 – ahsteele 2013-05-14 18:55:54

+0

叽叽喳喳的举动! :)) – DrStrangeLove 2013-05-14 19:29:54

3

这样做的最简单方法是使用jQuery的包含选择:

if($("*:contains('Hello World')").length > 0) 
    console.log('yeah baby'); 

这种方式也为您提供了文本的容器元素。

+0

感谢您的帮助 – Sam 2013-05-14 18:31:12

+5

FWIW,这个特定的选择器将使用Sizzle(因为它不是一个本地支持的选择器)并且将选择页面上的每个单独元素,然后将循环*每个*元素检查文本。这不完全...有效。 – James 2013-05-14 18:48:05

-1

尝试.search() 事情是这样的:

document.body.innerHTML.search("Done successfully!"); 

,而不是innerHTML的或者使用的textContent

+0

document.body没有属性“匹配”,您应该使用innerText(或textContent)来代替。 – 2013-05-14 18:25:53

+0

'body'不包含名为'match'的函数。你是否正在考虑与正则表达式一起使用的'String.match'?如果是这样,'身体'肯定不是一个字符串。 – 2013-05-14 18:26:34

+1

对不起,我自己发现了自己的错误,并将其编辑为另一个解决方案 – Milchkanne 2013-05-14 18:29:38

相关问题