window.getSelection(),如何判断锚节点是否在焦点节点之前?

Nul*_*uli 5 javascript jquery dom selection dom-selection

我想只允许从左到右进行选择,因此锚节点始终是DOM树中的第一个节点(相对于焦点节点).

有没有一种简单的方法来测试锚节点是否位于焦点节点之前?

Tim*_*own 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;
}
Run Code Online (Sandbox Code Playgroud)