2012-04-26 2 views
3

간단한 ubb 편집기를 만들려고했지만 document.selection.createRange()가 IE에서 작동하지 않고 강조 표시된 텍스트가 표시되지 않습니다. 강조 표시된 텍스트를 경고하지만 아무 것도 얻지 못함). 나는 아직도 그 이유를 찾아서 해결할 수 없다.document.selection.createRange()가 IE에서 작동하지 않습니다

You can have a look at this script in action here

window.onload = function() { 
    var ubb = document.getElementById('ubb_code'); 
    var ubba = ubb.getElementsByTagName('a');//ubb buttons 
    var textarea = document.getElementsByTagName('textarea')[0];//editable textarea filed 

    //onclick to insert ubbcode 
    ubba[0].onclick = function() { 
     tag('[b]','[/b]'); 
    }; 

    //function used to insert ubbcode 
    function tag(tag1,tag2){ 
     // code for IE 
     if (document.selection){ 
      textarea.focus(); 
      var sel = textarea.document.selection.createRange();//It DOES NOT work! 
      //alert(sel.text); 
      sel.text = tag1 + sel.text + tag2; 
     }else{ 
     // code for none-IE webbrowsers 
      var len = textarea.value.length; 
      var start = textarea.selectionStart; 
      var end = textarea.selectionEnd; 


      var scrollTop = textarea.scrollTop; 
      var scrollLeft = textarea.scrollLeft; 


      var sel = textarea.value.substring(start, end); 
      //alert(sel); 
      var rep = tag1 + sel + tag2; 
      textarea.value = textarea.value.substring(0,start) + rep + textarea.value.substring(end,len); 

      textarea.scrollTop = scrollTop; 
      textarea.scrollLeft = scrollLeft; 
     } 
} 
+1

를 참조하십시오, IE의 선택을 파괴 onclick을 일으킬! – marcel

답변

0

에게 지원, 선택 객체는 더 이상 지원되지 않습니다. window.getSelection을 사용하면 동일한 동작을 얻을 수 있습니다. 더 많은 정보를 들어 당신이 IE에 대한 document.selection.createRange()를 사용하고 일부 기능을 실행할 때 강조 표시된 텍스트를 유지하려는 경우, onclick을 대신하면 onMouseDown 사용 http://msdn.microsoft.com/en-us/library/ie/ms535869(v=vs.85).aspx

+0

왜 이것을 downvoted입니까? – KSK

+0

var range = window.getSelection(). getRangeAt (0) – Alexander

관련 문제