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

标签 javascript jquery dom selection dom-selection

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

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

最佳答案

这是一种简单的方法,它利用了将 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;
}

关于javascript - window.getSelection(),如何判断 anchor 节点是否在焦点节点之前?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8038683/

相关文章:

javascript - 这不是调用我的 obj 函数的正确方法吗?

javascript - 绘制星爆 - basil.js

javascript - jQuery 对话框失去对滚动的关注

jquery - 如何在 Repeater 中隐藏一个 div

javascript - 在新行中动态添加更多文本字段 (html)

只返回我想要的某些元素的Java Http请求

javascript - 使用 Redux 时哪种更好的 CRUD 编码风格?

javascript - 从具有多个按钮的模态返回一个值( react )

javascript - AJAX 函数甚至在第一行 jQuery 按钮点击之前就被调用了,为什么?

php - 加载剥离 javascript 并将其放入数组中供以后使用的替代方法是什么