window.getSelection (), как определить, находится ли узел привязки перед узлом фокуса? - PullRequest
5 голосов
/ 07 ноября 2011

Я хочу разрешить выбор только слева направо, поэтому якорный узел всегда будет первым узлом дерева DOM (относительно узла фокуса).

Есть ли простой способ проверить, находится ли узел привязки перед узлом фокуса?

1 Ответ

7 голосов
/ 07 ноября 2011

Вот простой способ сделать это, используя тот факт, что установка конца диапазона 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...