我想只允许从左到右进行选择,因此锚节点总是将成为DOM树中的第一个节点(相对于焦点节点)。
是否有一种简单的方法来测试锚节点是否位于焦点节点之前?
答案 0 :(得分: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;
}