テキストを選択する場合、前の要素の最後から始まることもあれば、テキストノードの最初から始まることもあるなど、選択の開始と終了の正確な場所にいくつかのバリエーションがあります。これを正規化しようとしているので、常にテキストを含む要素の先頭から始まり、テキストを含む要素の最後で終わり、ブラウザ間で一貫性が保たれます。
例えば<b>mouse></b><i>cat</i>
「cat」を選択すると、chrome は常に正しいことを行い、startContainer cat と startOffset 0 で選択を返すように見えます。
これを修正する私の大まかな試みは成功しませんでした:
var sr=rangy.getSelection().getRangeAt(0);
var sc=sr.startContainer;
if(sc.nodeType!=3||sr.startOffset==sc.length)
{
sr.setStartAfter(sc); //move start to next node in range
}
rangy.getSelection().setSingleRange(sr);
console.log(sr.inspect());
私は何が欠けていますか?