2016-10-25 10 views
1

私は 'find page in'検索ボックスを実装しており、うまくいくいくつかのjavascriptコードを見つけました。複数の文字列がある場合は、Enterキーを押して結果間を移動し、最初に戻ります。ただし、結果が1つだけの場合は、最初の検索で見つからないアラートがスローされた後にもう一度入力してください。単一の結果で再度Enterキーを押したときに警告が表示されなくなるような方法はありますか?ここでJavascriptで検索 - 1つの結果エラー

コードです:

var TRange=null; 

function findString (str) { 
if (parseInt(navigator.appVersion)<4) return; 
var strFound; 
if (window.find) { 

    // CODE FOR BROWSERS THAT SUPPORT window.find 

    strFound=self.find(str); 
    if (!strFound) { 
    strFound=self.find(str,0,1); 
    while (self.find(str,0,1)) continue; 
    } 
} 
else if (navigator.appName.indexOf("Microsoft")!=-1) { 

    // EXPLORER-SPECIFIC CODE 

    if (TRange!=null) { 
    TRange.collapse(false); 
    strFound=TRange.findText(str); 
    if (strFound) TRange.select(); 
    } 
    if (TRange==null || strFound==0) { 
    TRange=self.document.body.createTextRange(); 
    strFound=TRange.findText(str); 
    if (strFound) TRange.select(); 
    } 
} 
else if (navigator.appName=="Opera") { 
    alert ("Opera browsers not supported, sorry...") 
    return; 
} 
if (!strFound) alert ("String '"+str+"' not found!") 
return; 
} 

私は明らかに何かがありますかどうかを確認するために、コードを見てきたが、私はJavaScriptに新たなんだし、それを把握することはできません。

ご迷惑をおかけして申し訳ありません。ありがとう。

+0

検索用語が変更された場合のみ検索できるようにすることができます...以前の検索文字列を保存し、pressに入力し、新しい用語が異なる場合には検証し、検索関数を呼び出す必要があります。 ... – gkb

+0

すばやい返信をいただきありがとうございます。複数の結果を繰り返す機能が削除されますか? –

+0

複数の結果を循環すると言っても、私はそれを得ていません。あなたは何らかの種類の遅延読み込みがあることを意味していますか? – gkb

答えて

0

window.findは十分サポートされていません。私はそれを使用することをお勧めします。言っ

、唯一つの結果がありますときに、ブラウザがすでにその結果を持って強調しているため先頭に検索が機能しません「巻き戻し」する

while(window.find(str, 0, 1)) continue; 

であなたの試み -なし結果があります強調表示された前(または後)に表示されます。

解決策の1つは、あなたが最初に手に入るまで(たとえば、document.body.innerHTMLの最初の文字のように)何かが存在することがわかっているものを逆方向に検索することです。

文書の最初の単語の唯一のインスタンスを検索している場合、この小さなハックはおそらく失敗することに注意してください。

+0

返信いただきありがとうございます。私は今問題がどこにあるかを見ます。私が使用できる 'window.find'に代わるものがありますか? –

+0

ブラウザの 'find'機能の機能を使いたい場合はありません。あなたはもちろん、あなたの心のコンテンツに操作することができますスパン(おそらく有用なデータの属性やスタイルで)の本文の本文とラップのマッチを介してあなたの方法を正規表現... – moopet

関連する問題