2013-05-01 3 views
1

window.getSelection()을 사용하여 Selection 객체를 쿼리하는 JavaScript 코드가 있습니다. 내가 선택하면, window.getSelection()은 Selection 매개 변수를 성공적으로 반환하지만, 화면의 아무 곳이나 클릭하여 선택을 무효화하면 window.getSelection()이 이전 Selection 객체를 계속 유지합니다.창 선택 개체를 무효화 할 수 있습니까?

나는 큰 것을 만들고 있지 않으므로 Rangy와 같은 라이브러리를 설치하고 싶지 않습니다. 선택 개체를 무효화하려면 어떻게해야합니까? 그건 그렇고,이 스크립트에 대한 Firefox 20.0.1을 사용하고 있습니다.

어떤 조언을 해주세요!

답변

1

텍스트의 다른 곳을 클릭하면 getSelection은 이전 선택 개체를 제공하지 않지만 빈 개체는 제공합니다. selection.toString() 길이를 테스트 할 수 있습니다.

var selectionIsNotEmpty = selection.toString().length>0; 

웹킷 브라우저에서는 선택 항목의 유형이 "범위"에서 "캐럿"또는 "없음"으로 변경됩니다.

Demonstration

+0

은 어떻게 선택 객체 유형에 대한 테스트합니까 (다음 다른 곳에 클릭 무언가를 선택)? instanceof를 사용했지만 Caret 유형이 존재하지 않습니다. – hiddenUser

+0

나는'type' 속성을 사용합니다. 데모보기. 선택 영역의 길이를 테스트 할 수도 있습니다. –

+0

type 속성은 Chrome에서 잘 작동하지만 Firefox에서는 정의되지 않습니다. 당신은 크로스 브라우저가 있습니까? – hiddenUser

관련 문제