2009-08-14 4 views
0

웹 페이지에서 사용자가 선택한 영역에 대한 HTML을 가져 오는 다음 함수가 있습니다. 이 기능은 제대로 작동하지 않습니다.xul-get selection 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(); 

이 줄 returnsselection object. 그것은 사용자가 선택한 정확한 텍스트를 포함합니다. 그런 다음 선택 항목의 범위를 가져오고 commonAncestorContainer을 얻습니다. 이 같은 코드 그래서 만약 :

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

을 그리고 사용자가 두 번째 문장의 'S'로 첫 문장의 'S'에서 선택 당신은 또한 얻을 것이다, 그래서 다음 commonAncestorContainer는 div 요소이다 나머지 텍스트.

유효한 이유는 올바른 HTML 단편을 만들려는 경우입니다 (함수 이름이 암시하는 것처럼 보입니다). 단, 선택한 텍스트가 필요하면 toString 메서드를 호출하십시오. 범위 : 직접

var focusedWindow = document.commandDispatcher.focusedWindow; 
var sel = focusedWindow.getSelection(); 
var r = sel.getRangeAt(0); 
return r.toString();