使用 Javascript 移动光标位置
Move the cursor position with Javascript?
我希望将插入符号在其当前位置之前正好移动四个空格,以便我可以正确插入制表符。我已经在插入符号的位置使用了 HTML 插入,但是当我插入 HTML 时,插入符号被留下了。在过去的一个小时左右的时间里,我一直在寻找各种方法来做到这一点,我已经尝试了很多,但我无法让其中任何一个为我工作。这是我尝试过的最新方法:
function moveCaret(input, distance) {
if(input.setSelectionRange) {
input.focus();
input.setSelectionRange(distance, distance);
} else if(input.createTextRange) {
var range = input.createTextRange();
range.collapse(true);
range.moveEnd(distance);
range.moveStart(distance);
range.select();
}
}
它绝对不做任何事情 - 不会移动插入符号,抛出任何错误或任何东西。这让我感到困惑。是的,我知道上面的方法集(应该)将插入符号设置在指定节点(即 input
)开头的某个位置,但即使这样也不起作用。那么,我到底做错了什么,我怎样才能做对呢?
编辑:根据o.v.提供的链接,我设法拼凑了一些东西,终于在做一些事情:抛出错误。耶!下面是新代码:
this.moveCaret = function(distance) {
if(that.win.getSelection) {
var range = that.win.getSelection().getRangeAt(0);
range.setStart(range.startOffset + distance);
} else if (that.win.document.selection) {
var range = that.win.document.selection.createRange();
range.setStart(range.startOffset + distance);
}
}
现在,这给出了错误Uncaught Error: NOT_FOUND_ERR: DOM Exception 8
.知道为什么吗?
您拥有的代码片段用于文本输入和文本区域,而不是contenteditable
元素。
如果您的所有内容都位于单个文本节点中,并且所选内容完全包含在其中,则以下内容适用于所有主流浏览器,包括 IE 6。
演示:http://jsfiddle.net/9sdrZ/
法典:
function moveCaret(win, charCount) {
var sel, range;
if (win.getSelection) {
// IE9+ and other browsers
sel = win.getSelection();
if (sel.rangeCount > 0) {
var textNode = sel.focusNode;
var newOffset = sel.focusOffset + charCount;
sel.collapse(textNode, Math.min(textNode.length, newOffset));
}
} else if ( (sel = win.document.selection) ) {
// IE <= 8
if (sel.type != "Control") {
range = sel.createRange();
range.move("character", charCount);
range.select();
}
}
}
相关文章:
- 自定义函数中的光标位置
- jQuery/Javascript>on单击将文本放置在最后一个已知的光标位置
- 当用户单击按钮(在光标位置)时,在输入字段中添加一个文本字符串
- 如何在按键事件发生后获取文本光标的位置
- 内容可编辑分区-根据内部HTML位置的光标位置
- 保持光标位置元素在顶部使用 svg
- 保存键控触发器时保持光标位置的最佳做法
- 如何在java脚本中获取光标位置
- 获取光标位置或光标在 TinyMCE 中的行数
- 如何在每次页面重新加载时更改渐变背景,同时保持光标位置元素处于活动状态
- 在Chrome中,光标位置异常地位于输入值的末尾
- 在光标位置的文本区域中插入一个字符串,并进行一些更改
- 如何从谷歌地图事件访问光标位置(即页面的x和y轴)
- 如何在光标所在的位置绘制线条?HTML5画布使用MrDoob's和谐
- 如何在网页加载asp.net上显示文本框中第二个字母的光标位置
- 当前光标位置(百分比)
- GWT:如何从当前光标位置或所选文本中获取css样式的属性
- 在光标位置插入HTML,并使用javascript将光标移动到插入的HTML的末尾
- jQuery:使用插件Tipsy将工具提示附加到鼠标光标位置
- 不带HTML的光标位置需要转换为带HTML的位置