2012-04-02 14 views
1

ユーザーがウェブページで強調表示したテキストに関する情報を保存しようとしています。現在、私は以下に示すgetSelectionメソッドを使用しています:ハイライトされたテキストのインデックスの検索

var txt = ''; 
if (window.getSelection){txt = window.getSelection();} 
else if (document.getSelection){txt = document.getSelection();} 
else if (document.selection){txt = document.selection.createRange().text;} 
else return; 

強調表示されたテキストを取得します。次に、本文全体を検索し、強調表示されたテキストのインデックスを格納しています。 getSelectionメソッドは、強調表示されたテキストがテキスト本文に複数回表示される場合、テキストの間違った繰り返しを見つけて間違ったインデックスを保存するという問題があるため、強調表示されるテキストのみを返します。

私は正しいインデックスを保存するためにどのように考えていますか?

ありがとうございます!

答えて

1

QuirksModeはこれについてan articleです。

おそらく、このコードに興味があると思います:

var userSelection; 
if (window.getSelection) { 
    userSelection = window.getSelection(); 
} 
else if (document.selection) { // should come last; Opera! 
    userSelection = document.selection.createRange(); 
} 

var rangeObject = getRangeObject(userSelection); 

function getRangeObject(selectionObject) { 
    if (selectionObject.getRangeAt) 
     return selectionObject.getRangeAt(0); 
    else { // Safari! 
     var range = document.createRange(); 
     range.setStart(selectionObject.anchorNode,selectionObject.anchorOffset); 
     range.setEnd(selectionObject.focusNode,selectionObject.focusOffset); 
     return range; 
    } 
} 
関連する問題