2011-11-07 3 views
4

Je souhaite autoriser uniquement la sélection de gauche à droite, de sorte que le nœud d'ancrage soit toujours le premier nœud de l'arborescence DOM (par rapport au nœud de mise au point).window.getSelection(), comment dites-vous si le nœud d'ancrage vient avant le nœud de focus?

Existe-t-il un moyen facile de tester si le nœud d'ancrage précède le nœud de mise au point?

+1

Vous ne savez pas pourquoi cela a été déprécié. Je pense que c'est une question décente. –

Répondre

7

Voici une façon simple de faire cela qui utilise le fait que le fait de placer la fin d'une plage DOM à un point antérieur du document au-delà du début de la plage réduit la plage. Je pense que cela va casser dans Firefox 2, qui a eu un bug dans sa gestion de cela, mais le nombre d'utilisateurs de ce navigateur est minuscule.

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; 
} 
Questions connexes