Вот простой способ сделать это, используя тот факт, что установка конца диапазона 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;
}