2015-09-19 51 views
2

後通過使用JavaScript或jQuery的,我想如果有一個字搞清楚,說「卡薩布蘭卡」,可在網頁上?在搜索頁面上的字一個AJAX調用

我正在瀏覽的網頁,使一個Ajax調用,它改變了頁面的內容。所以我應該在ajax調用後搜索單詞「casablanca」。

到目前爲止,我已經找到了最好的辦法是:

window.find('casablanca'); 

但這種代碼突出顯示了字,這是我不想要的。

有沒有更好的方法?

謝謝!

+2

什麼是你期望,而不是強調它的行爲? – Anchor

+0

@Anchor他說:「弄清楚,如果在網頁上不存在的話,不強調它」,所以我認爲他只是想要一個布爾 –

+1

'document.body.innerHTML.match(「卡薩布蘭卡」)' –

回答

0

這裏有一個快速和編程的方式來確定當前的HTML頁是否包含特定關鍵字:

function pageContains(str) { 
    return document.body.innerHTML.toString().indexOf(str) > -1; 
} 

的jsfiddle:https://jsfiddle.net/shj4LwqL/


請注意,對於關鍵字上面的代碼搜索在頁面的body標籤中,如果您在頁面正文中包含JavaScript,並且您的關鍵字在JavaScript中被寫爲字符串,那麼您將會得到誤報。如果你想一個特定元素中進行搜索,而不是,您可以使用下面的變體:

function elementContains(el, str) { 
    return el.innerHTML.toString().indexOf(str) > -1; 
} 
0

僅檢索內容,而不是在標籤等:

function searchInPage(val) { 
    var allElements = document.getElementsByTagName('*'); 

    for(var i = 0; i < allElements.length; i++) { 
     var node = allElements[i].firstChild; 

     //Is it a text node? 
     if(node !== null && node.nodeType === 3) { 
      if(node.nodeValue == val) return true; 
     } 
    } 
    return false; 
} 

未經測試它顯示你要做到這一點。

0

嘗試使用.contents(),.is()返回Boolean;替代.filter().is()返回包含選定文本元素,如果truefalse如果沒有找到在選擇的文本節點

var res = $("body").contents().is(function(i, el) { 
 
    return $(":contains(casablanca)").is(el) 
 
}); console.log(res)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div class="post-text" itemprop="text"> 
 

 
    <p>By using JavaScript or jQuery, I am trying to figure out if a word, say "casablanca", is available on the page?</p> 
 

 
    <p>The page I am working on makes an ajax call which changes the content of the page. So I am supposed to search for the word "casablanca" after the ajax call.</p> 
 

 
    <p>The best way I have found so far is:</p> 
 

 
    <pre class="default prettyprint prettyprinted"><code><span class="pln">window</span><span class="pun">.</span><span class="pln">find</span><span class="pun">(</span><span class="str">'casablanca'</span><span class="pun">);</span></code></pre> 
 

 
    <p>But this code highlights the word, which is something I don't want.</p> 
 

 
    <p>Is there a better way?</p> 
 

 
    <p>Thank you!</p> 
 
</div>