2009-08-14 6 views
0

私は、Webページ上のユーザー選択領域のHTMLを取得するはずの次の関数を持っています。この関数は正しく動作していないようです。xul-選択のHTMLを取得

いつかは、選択されていないHTMLも取得します。

誰でもこの機能を検討できますか? - どうもありがとう。

// ----------------------------選択したHTMLを取得------------- -----------

機能getSelectionHTML(){

if (window.getSelection) 
{ 
    var focusedWindow = document.commandDispatcher.focusedWindow; 
    var sel = focusedWindow.getSelection(); 
    var html = ""; 
    var r = sel.getRangeAt(0); 
    var parent_element = r.commonAncestorContainer;   
    var prev_html = parent_element.innerHTML; 
    if(prev_html != undefined) 
    { 
     return prev_html; 
    } 
    return sel; 
} 
return null; 

}

答えて

2

あなたがではなく、親要素の内容を取得しているようですが、私には見えます選択自体。親要素に選択したもの以外の要素が含まれている場合は、その要素も取得します。

var sel = focusedWindow.getSelection(); 

この行returns a selection objectです。これは、ユーザーが選択した正確なテキストを含みます。選択範囲から範囲を取得し、commonAncestorContainerを取得します。あなたはこのようなコードがある場合はそう:

<div id="ancestor"> 
    <p>First sentence.</p> 
    <p>Another sentence.</p> 
</div> 

をそして、あなたのユーザが第2文の「S」に最初の文の「S」から選択し、その後commonAncestorContainerはdiv要素であるあなたも得られますので、残りのテキスト

正当な理由は、有効なHTMLフラグメントを保証したい場合です(これは関数名で暗示されているようですが)。ただし、選択したテキストだけが必要な場合はtoStringメソッドを呼び出します範囲は直接:

var focusedWindow = document.commandDispatcher.focusedWindow; 
var sel = focusedWindow.getSelection(); 
var r = sel.getRangeAt(0); 
return r.toString(); 
関連する問題