7

左から右への選択のみを許可したいので、アンカー ノードは常に DOM ツリーの最初のノードになります (フォーカス ノードに対して)。

アンカー ノードがフォーカス ノードの前に来るかどうかをテストする簡単な方法はありますか?

4

1 に答える 1

7

これは、DOM 範囲の終了を範囲の開始よりもドキュメント内の前のポイントに設定すると、範囲が折りたたまれるという事実を利用した簡単な方法です。これは、これの処理にバグがあった Firefox 2 で壊れると思いますが、そのブラウザーのユーザー数はごくわずかです。

function isSelectionBackwards() {
    var backwards = false;
    if (window.getSelection) {
        var sel = window.getSelection();
        if (!sel.isCollapsed) {
            var range = document.createRange();
            range.setStart(sel.anchorNode, sel.anchorOffset);
            range.setEnd(sel.focusNode, sel.focusOffset);
            backwards = range.collapsed;
            range.detach();
        }
    }
    return backwards;
}
于 2011-11-07T16:02:39.687 に答える