[英]Set caret position at a specific position in contenteditable div
在標記重復/下降之前看到
我見過很多解決方案。 很多人都是Tim Down和其他人。 但沒有一個可行。 我見過window.getSelection
, .addRange
等,但是看不到它們在這里是如何應用的。
這是一個jsfiddle 。
(試過)代碼:
var node = document.querySelector("div");
node.focus();
var caret = 10; // insert caret after the 10th character say
var range = document.createRange();
range.setStart(node, caret);
range.setEnd(node, caret);
var sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);
您需要將插入符號放在元素內的文本節點中,而不是元素本身。 假設您的HTML看起來像<div contenteditable="true">Some text</div>
,使用元素的firstChild
屬性將獲得文本節點。
更新了jsFiddle:
碼:
var node = document.querySelector("div");
node.focus();
var textNode = node.firstChild;
var caret = 10; // insert caret after the 10th character say
var range = document.createRange();
range.setStart(textNode, caret);
range.setEnd(textNode, caret);
var sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.