2011-04-06 3 views
18

자바 스크립트에서 범위와 선택 객체의 차이점을 알고 싶었습니다.브라우저의 범위와 선택의 차이점

이 두 가지 중 하나에서 같은 기능을 사용할 수 있습니다. 어떤 경우에 두 가지 중 어느 것을 사용해야하는지 알고있는 특정 상황이 있습니까? Range 독립적 시각적 표현의 문서의 연속 부분을 나타낸다

+0

다음 표를 참조하십시오 : http://www.quirksmode.org/dom/range_intro.html#link2. – Blender

답변

26

근본적인 차이는 Selection는 사용자의 선택을 나타내는 것이다. Selection은 (거의) 0, 하나 또는 그 이상의 숫자로 나타낼 수 있지만 범위는 선택과 완전히 독립적으로 생성 및 수정할 수 있습니다. 예를 들어, SelectiondeleteFromDocument()은 그 구성 범위의 모든에 deleteContents()를 호출하는 것과, 당신이 anchorNode, anchorOffset 사용하여 선택에서 가장 최근에 선택한 범위의 경계를 얻을 수 있습니다 :이 기능에 약간의 중복이

, focusNodefocusOffset 속성 그러나 몇 가지 중요한 차이가 있습니다.

  • Selection에는 여러 범위가 포함될 수 있습니다. 그러나 현재이 기능을 지원하는 주요 브라우저는 Firefox뿐입니다.
  • Selection이있는 나는 (focusNodefocusOffset으로 표시) 선택의 끝 경계가 시작 경계 (anchorNodeanchorOffset)보다 문서의 이전 발생할 수 있다는 것을 의미한다 "뒤로"될 수 있습니다. 범위에는 방향이 없습니다.
  • toString()은 다르게 작동합니다. 대부분의 브라우저 (특히 IE 9는 아님)에서 Selection 객체의 toString()을 호출하면 선택된 보이는 텍스트 만 반환되고 범위의 toString()을 호출하면 <script> 요소를 포함하여 범위 내의 모든 텍스트 노드가 연결됩니다. CSS를 통해 숨겨진 요소.