In the selection, can focusOffset be before anchorOffset?

When programmatically defining a range / selection in JavaScript, is it possible for focusOffset in the range to be before anchorOffset? How do we determine the right to choose from the left?

JS fiddler link, for example: http://jsfiddle.net/johncch/ejVab/1/

+3
source share
3 answers

The way to create a “reverse” choice is a bit unobvious. This cannot be done simply by selecting a range using the selection method addRange(), because ranges are unsent. You need to use the extend()selection method (example below).

, IE, 9: , IE 9 , , Microsoft IE 9, extend() , , , IE, . IE 10 extend(), , IE.

function selectRangeBackwards(range) {
    var sel = window.getSelection();
    var endRange = range.cloneRange();
    endRange.collapse(false);
    sel.removeAllRanges();
    sel.addRange(endRange);
    sel.extend(range.startContainer, range.startOffset);
}
+2

:

function makeSelection(a, b) {
    if(b < a) {
        var tmpA = a;
        a = b;
        b = tmpA;
    }
    // ... rest of your code

jsfiddle .

0

- MDN- . AnchorOffset/anchorNode "" ( , , ), focusOffset/focusNode "" ( ). / . , Range - startContainer/startOffset endContainer/endOffset .

if (window.getSelection() && window.getSelection().rangeCount)
    var range = window.getSelection().getRangeAt(0);

, , .

0

All Articles