在JavaScript中,获取和设置光标(也称为插入点或文本选择位置)的位置通常涉及到Range
和Selection
对象。以下是一些基础概念和相关操作:
function getCursorPosition(input) {
if ('selectionStart' in input) {
return input.selectionStart;
} else if (document.selection) {
input.focus();
var range = document.selection.createRange();
var range_all = document.body.createTextRange();
range_all.moveToElementText(input);
for (range_all.moveStart('character', -input.value.length); range_all.compareEndPoints("StartToStart", range) < 0; range_all.moveStart('character', -1)) {
var start = range_all.text.length;
}
return start;
}
return -1;
}
function setCursorPosition(input, pos) {
if (input.setSelectionRange) {
input.focus();
input.setSelectionRange(pos, pos);
} else if (input.createTextRange) {
var range = input.createTextRange();
range.collapse(true);
range.moveEnd('character', pos);
range.moveStart('character', pos);
range.select();
}
}
Range
和Selection
对象的支持程度不同。上面的示例代码已经考虑了IE和现代浏览器的兼容性问题。希望这些信息对你有所帮助!如果有更多具体问题,欢迎继续提问。
领取专属 10元无门槛券
手把手带您无忧上云