나는 해결책을 찾기 위해 웹을 둘러 보았습니다. 그러나 그것들은 모두 IE와 Firefox를 지원하는 코드로 나뉘는 것 같습니다. 모든 브라우저에서 작동하여 텍스트 영역의 커서에 텍스트를 삽입하는 좀 더 세련된 방법이 있는지 궁금합니다.JavaScript로 텍스트 영역에 커서를 놓은 상태에서 텍스트 삽입하기
정말 감사합니다,
리치
나는 해결책을 찾기 위해 웹을 둘러 보았습니다. 그러나 그것들은 모두 IE와 Firefox를 지원하는 코드로 나뉘는 것 같습니다. 모든 브라우저에서 작동하여 텍스트 영역의 커서에 텍스트를 삽입하는 좀 더 세련된 방법이 있는지 궁금합니다.JavaScript로 텍스트 영역에 커서를 놓은 상태에서 텍스트 삽입하기
정말 감사합니다,
리치
은 모두 구현 : FF와 IE를 supporing 코드를 지원하고 코드를. 프레임 워크를 사용하여 두 브라우저 모두에 대해 코드를 작성할 수 있습니다. 프레임 워크는 브라우저 간의 차이점을 분할하는 작업을 수행합니다.
슬픈 일이지만 브라우저는 100 % 호환되지 않습니다!
아니요, 없습니다. IE는 TextRange
개체를 가지고 있습니다. IE> = 9이고 마지막 오랜 시간 동안 다른 모든 것은 텍스트 영역과 텍스트 입력에 selectionStart
과 selectionEnd
속성을 가지고 있습니다. 이 특정 작업은 나쁘지 않네요 : 다음은 모든 주요 브라우저에서 바로 삽입 된 텍스트 후 (있는 경우), 현재의 선택을 삭제 캐럿에 텍스트를 삽입하고 캐럿의 위치를 변경합니다 :
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();
}
}
감사합니다 대단히, 브라우저가 지난 몇 년 동안 움직 였다고 생각했지만, 분명히 IE는 여전히 달라지기를 계속하고 있습니다. – richw81
좋은 소식은 IE 9에는'selectionStart'와'selectionEnd'가 있다는 것입니다. –
이것은 세 브라우저 모두에서 구현 한 경우에 효과적이었습니다. 선택한 텍스트를 바꾸는 것이 유일한 문제였습니다. val.slice (0, endIndex)를 val.slice (0, startIndex)로 바꾼 경우 선택 영역을 강조 표시하고 추가 된 텍스트로 바꾸는 기능을 제공합니다. 내가했던 동일한 기능을 필요로하는 다른 사람들을 위해서. – SomeoneRandom