2010-07-22 3 views

답변

0

은 모두 구현 : FF와 IE를 supporing 코드를 지원하고 코드를. 프레임 워크를 사용하여 두 브라우저 모두에 대해 코드를 작성할 수 있습니다. 프레임 워크는 브라우저 간의 차이점을 분할하는 작업을 수행합니다.

슬픈 일이지만 브라우저는 100 % 호환되지 않습니다!

20

아니요, 없습니다. IE는 TextRange 개체를 가지고 있습니다. IE> = 9이고 마지막 오랜 시간 동안 다른 모든 것은 텍스트 영역과 텍스트 입력에 selectionStartselectionEnd 속성을 가지고 있습니다. 이 특정 작업은 나쁘지 않네요 : 다음은 모든 주요 브라우저에서 바로 삽입 된 텍스트 후 (있는 경우), 현재의 선택을 삭제 캐럿에 텍스트를 삽입하고 캐럿의 위치를 ​​변경합니다 :

function insertTextAtCursor(el, text) { 
    var val = el.value, endIndex, range; 
    if (typeof el.selectionStart != "undefined" && typeof el.selectionEnd != "undefined") { 
     endIndex = el.selectionEnd; 
     el.value = val.slice(0, el.selectionStart) + text + val.slice(endIndex); 
     el.selectionStart = el.selectionEnd = endIndex + text.length; 
    } else if (typeof document.selection != "undefined" && typeof document.selection.createRange != "undefined") { 
     el.focus(); 
     range = document.selection.createRange(); 
     range.collapse(false); 
     range.text = text; 
     range.select(); 
    } 
} 
+0

감사합니다 대단히, 브라우저가 지난 몇 년 동안 움직 였다고 생각했지만, 분명히 IE는 여전히 달라지기를 계속하고 있습니다. – richw81

+1

좋은 소식은 IE 9에는'selectionStart'와'selectionEnd'가 있다는 것입니다. –

+0

이것은 세 브라우저 모두에서 구현 한 경우에 효과적이었습니다. 선택한 텍스트를 바꾸는 것이 유일한 문제였습니다. val.slice (0, endIndex)를 val.slice (0, startIndex)로 바꾼 경우 선택 영역을 강조 표시하고 추가 된 텍스트로 바꾸는 기능을 제공합니다. 내가했던 동일한 기능을 필요로하는 다른 사람들을 위해서. – SomeoneRandom

관련 문제