2012-07-06 2 views
1

JavaScript에서 TextRange 객체를 백업하여 나중에 복원하려고합니다. 이렇게하려면 blur 이벤트에 함수를 연결하려고했지만 함수가 호출 될 때 이미 내 선택 항목이 손실되었습니다./특정 실행 방법 동작 전에 블러 이벤트? 아니면이 트릭을 수행 할 다른 솔루션을 가지고 있습니까?흐림 이벤트가 발생하면 요소에서 선택한 텍스트를 백업 할 수 있습니까?

this._editableFrame._elt.onload= function(oEvent){ 
    oEvent.srcElement.contentDocument.body.onblur=function(oEvent) { 
    this._sel=this.document.selection.createRange().duplicate(); } 
    /*alert(this._sel.text);*/ 
    return true; 
}; 

그리고 나는이 작업을 수행 할 때 난 그냥 빈 TextRange이 : /하지만 난 함수에 "경고"를 작성하는 경우 내가 내 텍스트 선택을 얻기 위해 성공

이 시도했습니다 흐림 기능 :/어떻게 흐림 이벤트를 캡처 할 수 있으며이 조작 유형으로 무엇을 할 수 있습니까? 나는 초보자 자바 스크립트입니다./

+0

는 당신이 우리를 보여줄 수 당신이 시도 무엇 :

this._editableFrame._elt.onload = function(oEvent){ oEvent.srcElement.contentDocument.body.onbeforedeactivate=function(oEvent) { this._sel=this.document.selection.createRange().duplicate(); }; }; 

여기에 비슷한 질문에 대한 내 대답이야? BTW 당신은 ​​항상 블러 이벤트를 캡쳐 할 필요가 있기 때문에 실제 선택을 통해'global' 변수를 업데이트 할 수 있습니다. – antyrat

+0

나는 이것을 시도했습니다 : 'this._editableFrame._elt.onload = function (oEvent) { \t oEvent.srcElement. contentDocument.body.onblur = function (oEvent) { \t \t this._sel = this.document.selection.createRange(). duplicate(); \t} /* alert (this._sel.text); */ \t return true; }; ' 그리고 내가 할 때 그냥 빈 TextRange가 : /하지만 함수에 "경고"를 작성하면 성공 흐리게 함수에서 내 텍스트 선택을 얻으려면 :/어떻게 내가 블러 이벤트를 캡처 할 수 있습니다 이러한 유형의 조작으로 무엇을 할 수 있습니까? 나는 초보자 자바 스크립트입니다. – BlackMario

+0

질문을 편집하여 코드를 포함하십시오. 더 읽기 어렵고 볼 가능성이 적기 때문에 주석으로 게시하지 마십시오. – jackwanders

답변

1

내가 흐림 이벤트가 완벽하지 생각이

var selectedText = ""; 
function getSelectedText() 
{ 
    if (typeof window.getSelection != "undefined") { 
     selectedText = window.getSelection().toString(); 
    } 
    else if (typeof document.selection != "undefined" && document.selection.type == "Text") 
    { 
     selectedText = document.selection.createRange().text; 
    } 
} 

function show_selected_text() 
{ 
    getSelectedText(); 
    if(selectedText) alert(selectedText); 
} 

document.onmouseup = show_selected_text; 
document.onkeyup = show_selected_text; 

DEMO.

+0

답장을 보내 주셔서 감사합니다.이 임시 해결책을 구현하여 성공할 수 있습니다. 내 작업을 계속 진행할 수 있습니다. – BlackMario

+0

환영합니다 :-) –

1

당신에게 도움이 될 수

고마워, 난 ...이 문제에 많은 시간을 보냈다 IE에 대해서만 이야기하는 것 같기 때문에 IE 전용 beforedeactivate 이벤트를 사용하는 것이 좋습니다. blur 이벤트가 너무 늦었고 선택이 사라질 때까지 사라졌습니다.

https://stackoverflow.com/a/5338889/96100