DOM의 텍스트 영역에 있는 문자를 조작하는 것이 더 번거롭습니다.
그래서 저는 이 패키지를 모든 사람과 공유하기 위해 IE6,8, Firefox, Chrome, Opera 및 Safari에서 테스트했습니다. 호환성에는 문제가 없습니다.
참고: Firefox에서 문자열을 추가할 때 버그가 있습니다. 즉, scrollTop이 0이 됩니다. 물론 해결되었지만 완벽하지는 않습니다. 혹시 연구해 보신 전문가 있으시면 조언 부탁드립니다.
var TT = {
/*
* 커서 위치 가져오기
* @Method getCursorPosition
* @param t 요소
* @return 번호
*/
getCursorPosition: function(t){
if (문서 .selection) {
t.focus();
var ds = document.selection;
var range = ds.createRange()
var Stored_range = range.duplicate(); Stored_range.moveToElementText (t);
stored_range.setEndPoint("EndToEnd", range);
t.selectionStart = selected_range.text.length - range.text.length = t.selectionStart; range.text .length;
return t.selectionStart;
} else return t.selectionStart
},
/*
* 커서 위치 설정
* @Method setCursorPosition
* @param t 요소
* @param p 번호
* @return
*/
setCursorPosition:function(t, p){
this.sel(t,p,p);
},
/*
* 커서 뒤에 삽입
* @Method add
* @param t element
* @param txt String
* @return
*/
add:function (t, txt){
var val = t.value;
if(document.selection){
t.focus()
document.selection.createRange ().text = txt;
} else {
var cp = t.selectionStart;
var ubbLength = t.value.length;
// document.getElementById ('aaa').innerHTML = s '
'
t.value = t.value.slice(0,t.selectionStart) txt t.value.slice(t.selectionStart) , ubbLength) ;
this.setCursorPosition(t, cp txt.length)
// document.getElementById('aaa').innerHTML = t.scrollTop '
'; firefox=navigator .userAgent.toLowerCase().match(/firefox/([d.] )/) && setTimeout(function(){
if(t.scrollTop != s) t.scrollTop=s;
}, 0)
};
},
/*
* 커서 앞이나 뒤의 n 문자 삭제
* @Method del
* @param t 요소
* @ param n 숫자 n>0 다음에 n* @return
* 값을 재설정하면 scrollTop 값이 0으로 지워집니다.
*/
del:function (t, n){
var p = this.getCursorPosition(t);
var s = t.scrollTop;
var val = t.value = n > ? val.slice(0 , p - n) val.slice(p):
val.slice(0, p) val.slice(p - n)
this.setCursorPosition(t ,p - ( n firefox=navigator.userAgent.toLowerCase().match(/firefox/([d.] )/) && setTimeout(function(){
if(t .scrollTop != s) t.scrollTop=s;
},10)
},
/*
* s에서 z 위치까지 텍스트 선택
* @Method sel
* @param t 요소
* @param s 번호
* @param z 번호
* @return
*/
sel:function(t, s, z){
if(document.selection){
var range = t.createTextRange();
range.moveEnd('character', -t.value.length)
range.moveEnd('character', z );
range.moveStart('character', s);
range.select()
}else{
t.setSelectionRange(s,z); );
}
},
/*
* 문자열 선택
* @Method sel
* @param t 요소
* @param s 문자열
* @return
* /
selString:function(t, s){
var index = t.value.indexOf(s)
index != -1 ? , 인덱스 s.length) : false
}
}