簡體   English   中英

將插入符號位置設置在contenteditable div中的特定位置

[英]Set caret position at a specific position in contenteditable div

在標記重復/下降之前看到

  1. contenteditable div 不會有子元素
  2. 我不想在div末尾設置位置
  3. 不想要跨瀏覽器解決方案 ,只需要Chrome支持
  4. 只有vanilla JS ,沒有庫。

我見過很多解決方案。 很多人都是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:

http://jsfiddle.net/xgz6L/8/

碼:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM