2011-11-07 15 views
4

左から右への選択だけを許可したいので、アンカーノードは常に(フォーカスノードに相対して)DOMツリーの最初のノードになります。window.getSelection()、アンカーノードがフォーカスノードの前に来るかどうかをどのように判断しますか?

アンカーノードがフォーカスノードの前に来るかどうかをテストする簡単な方法はありますか?

+1

これがなぜダウンボートを得たか分かりません。私はまともな質問だと思う。 –

答えて

7

DOM Rangeの終わりをドキュメントの最初の点に設定して範囲の開始点を設定すると、範囲が折りたたまれてしまうという事実を利用する簡単な方法です。 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; 
} 
関連する問題