これは1年前のことですが、この投稿は、Caretの位置を見つけるための多くの質問に対する上位の検索結果であり、これが役立つことがわかりました。
上記のTimの優れたスクリプトを使用して、コンテンツ編集可能なdiv内のある位置から別の位置に要素をドラッグドロップした後、新しいカーソル位置を見つけようとしていました。FFとIEでは完全に機能しましたが、Chromeでは、ドラッグアクションにより、ドラッグの開始から終了までのすべてのコンテンツが強調表示され、戻り値caretOffset
が大きすぎたり小さすぎたりしました(選択した領域の長さ)。
最初のifステートメントに数行を追加して、テキストが選択されているかどうかを確認し、それに応じて結果を調整しました。新しいステートメントは以下のとおりです。OPがやろうとしていたことではないので、ここにこれを追加するのが不適切な場合はご容赦ください。しかし、私が言ったように、Caretの位置に関連する情報を何度か検索すると、この投稿にたどり着きました。 。
行が追加されたTimの最初のifステートメント(*):
if (typeof window.getSelection != "undefined") {
var range = window.getSelection().getRangeAt(0);
var selected = range.toString().length; // *
var preCaretRange = range.cloneRange();
preCaretRange.selectNodeContents(element);
preCaretRange.setEnd(range.endContainer, range.endOffset);
caretOffset = preCaretRange.toString().length - selected; // *
}