2011-09-12 3 views
10

프로그래밍 시나리오에서 내 GWT 텍스트 상자에 집중했는지 확인해야했습니다. 나는 부울과 한 쌍의 포커스를 추가하는 것을 끝내었다. 수동으로 포커스 상태를 유지하기 위해 BlurHandler가 포커스를받는 컴포넌트가 gwt에 포커스를 맞추면 리턴하는 메소드가없는 이유를 궁금하게 만든다.GWT에 isFocused()가없는 이유는 무엇입니까?

+1

여기 아무도 대답 할 수 없습니다. 그것이 설계된 구글의 사람들 중 한 사람이 오지 않는다면 상당히 어려울 것입니다. –

+2

그들은 당신이 생각하는 것 이상입니다. –

+0

FocusHandler를 사용하는 것이 잘못된 이유는 무엇입니까? – helpermethod

답변

11

몇 년 전 (Firefox 3, Safari 4, 게임에서 마지막 플레이어를 가리키며 지원 document.activeElement을 추가 할 때까지) 크로스 브라우저 방식이 없었기 때문에.

GWT는 [1] Safari 3 (Safari 2 지원이 더 이상 사용되지 않습니다)와 Firefox 2 (DevMode 플러그인 없음)를 공식적으로 지원하지만 브라우저가 지원되지 않는다는 의미는 아닙니다. Opera가 지원되지만 DevMode도 없음), 지원되는 모든 브라우저에서 작동 할 수있는 기능을 제공 할 수 없습니다.

마지막으로 중요한 것은 이슈 트래커의 개선 요청을 한 사람이 없다고 생각합니다. (나는 적어도 찾을 수 없었습니다.) 그리고 당신이 말했듯이, 당신은 이미 FocusHandler/BlurHandler (크로스 브라우저에서 작동)를 사용하여 그것을 오늘 할 수 있습니다.

[1] http://code.google.com/webtoolkit/doc/latest/FAQ_GettingStarted.html#What_browsers_does_GWT_support? GWT 2.1.0에서 지원 (user.agent = gecko, gecko1_8)이 제거 된 Firefox 1.0이 여전히 나열되어 있고 지원이있는 IE9가 나열되어 있지 않으므로 페이지가 약간 오래되었다고 생각합니다. GWT 2.3.0에 추가되었고 마지막으로 Opera의 최신 버전 만 지원되는 반면 Opera 9에 대해서는 목록이 지원됩니다.

+0

어떤 브라우저에서 지원되는지 더 자세히 보려면 ​​MDN을 참조하십시오. https://developer.mozilla.org/en-US/docs/Web/API/document.activeElement 오늘 모든 주요 브라우저가이를 지원합니다 IE 4 이상, Chrome 2 이상 등)를 사용하기에 안전합니다. – PhiLho

1

어떤 위젯에 중점을두고 있는지 찾아 보려면 이미 해결책이 있습니다. GWT에 초보자로서, 나는 내 솔루션 공유 제안 :

  1. 는 위젯의 'focusedWidget'step 1

  2. 만들기 초점 핸들러와 같은 객체에 private 필드를 선언, 여기에 클래스 텍스트 상자입니다. OnFocus 블록에서 위젯을 'focusedWidget'에 할당하면됩니다. 집중 될 수있는 모든 위젯에 이러한 종류의 이벤트를 추가 할 수 있습니다. ! [2 단계] [2]

  3. 그게 전부입니다. 초점을 맞출 때마다 포커스 이벤트를 묶은 모든 위젯이 'focusedWidget'으로 설정됩니다. 그런 다음 'focusedWidget'을 사용하여 어떤 현재 위젯에 포커스가 있는지 확인할 수 있습니다. ! [3 단계] [3]

나는 그것을 JUnit에서 시험해 본다. see image of snippet here 도움이 되길 바랍니다.

+0

이것은 도움이되지만 블러 핸들러를 각 항목에 추가해야하므로 현재 포커스가있는 항목이없는 상황을 감지하고 focusedWidget 값을 null로 설정할 수 있습니다. – Joel

관련 문제