フォーカスされていないChromeのcontenteditable divにキャレット位置を設定する必要がありますが、divのHTMLのキャレット位置、つまり文字インデックスを知っています。div には、その中に他の要素が含まれる場合があります。
私がこれまでに得た最高のものは、divの最後または最初にキャレット位置を設定することです
domNode.focus();
if (window.getSelection) {
var sel = window.getSelection();
//sel.collapseToStart();
//sel.collapseToEnd();
sel.collapse(domNode, caretPos);
}
また、選択範囲で「変更」を呼び出して、カーソルを単語ごとに手動で移動し、選択したテキストの長さを数えようとしましたが、途中に要素がある場合はテキストが停止します。たとえば、div コンテンツが「hello <span>world</span>
」の場合、選択したノードのテキストのみとなりますhello
。