正しい範囲オブジェクトを取得できない理由がわかりません。問題を説明するのは難しいです。
例:5つのdivがあり、各divにはフレーズが含まれています。論理的にmousedown
は、これらのdivのいずれかでイベントをトリガーすると、イベントターゲットを取得できます。わかりました、これは初歩です。
ただし、イベントで範囲オブジェクトを操作するmousedown
場合、イベントターゲットは常にクリックしたものですが、range.startContainer
は前のdivを指しています。
このフィドルをチェックしてください:
1 LineLineLine
2 LineLineLineLineLine
3 LineLineLineLine
4 LineLineLine
5 LineLineLineLine
問題を再現するための手順(コンソールを参照):
- 最初の行でマウスボタンを押したままにします(コンソールは「undefined」と言います[*])
- マウスボタンを離します(範囲は安全に最初の行を指しています)
- 4行目でマウスボタンを押したままにします(コンソールは「firstline」と言います)
- コンソールには、前にクリックした行が表示されます
[*] ドキュメントにまだ範囲がないため未定義ですが、その場で作成してドキュメントに挿入できるため、これは重要ではありません。
範囲の前にmousedownイベントが実行されたと推測できます。