今天看到操作文本框里的光标,觉得以后可能会写编辑器的时候可能会用上
其中最主要的是获得光标所取文本的开始和结束位置 具体函数如下:
function getPosition() {
var startPos = endPos = 0;
var element = document.getElementById("selecttable");
if( document.selection ) {
// for internet Explorer
var range = document.selection.createRange();
var drange = range.duplicate();
drange.moveToElementText( element );
drange.setEndPoint( "EndToEnd", range );
startPos = drange.text.length - range.text.length;
endPos = startPos + range.text.length;
}else if( window.getSelection ) {
// for firefox chrome safair
startPos = element.selectionStart;
endPos = element.selectionEnd;
}
return {
"start" : startPos,
"end" : endPos
}
}
设置光标的函数
function setPos ( m, n ) {
var pos = n || m;
if( document.selection ) {
var range = document.selection.createRange();
range.collapse(true);
range.moveEnd('character', pos);
range.moveStart('character', m);
this.element.focus();
}else if( window.getSelection ){
this.startPos = this.element.selectionStart = m;
this.endPos = this.element.selectionEnd = pos;
this.element.focus();
}
}
下面是我的测试代码: