2009-12-01 4 views
0

에 대한 하이퍼 링크를 현재 페이지로 만들려면 내역 변경 이벤트가 발생합니까?gwt 하이퍼 링크 changeEvent

예를 들어 http://localhost:8080/index.html#foo에는 historyToken이 foo 인 하이퍼 링크가 있습니다. 클릭/변경 이벤트를 처리/실행하도록 앱을 얻으려면 어떻게해야합니까?

브라우저의 성격 상 자비로 행동합니까?

이 같은

답변

0
Hyperlink myLink = new Hyperlink("foo"); 
myLink.addClickHandler(new ClickHandler() { 
    @Override 
    public void onClick(ClickEvent event) { 
    String currentToken = History.getToken(); 
    String newToken = ((Hyperlink) event.getSource()).getTargetHistoryToken(); 
    if (currentToken == newToken) { 
     History.fireCurrentHistoryState(); 
    } 
    } 
}); 
0

뭔가가이 URL을 발사하고, 역사

History.newItem("foo", true); 

이 그냥 사용자 작업에 대한 응답으로 역사에 추가에 추가 :

History.newItem("foo", false); 

HistoryListener를 설치하는 것입니다 (인터페이스는 onHistoryChanged), 그 것에 대해서만 반응합니다.

사용자가 링크를 클릭하거나 즐겨 찾기로 바로 이동하면 onHistoryChanged에서 응답하십시오.

사용자가 무언가를하고 URL을 변경해야하는 경우 History.newItem (..., true)을 발생시키고 onHistoryChanged 내에서 다시 응답합니다.

1

앱이 Hyperlink 클릭에 응답하게하려면 ClickHandler를 하이퍼 링크에 추가하면됩니다. ClickHandler는 앱 인터페이스 등을 업데이트해야합니다. 히스토리 토큰은 하이퍼 링크 생성자에 설정된 히스토리 토큰에 따라 자동으로 업데이트되며 History.newItem() 메서드는 호출 할 필요가 없습니다.

브라우저의 URL 필드에 붙여 넣거나 사용자가 북마크 할 수있는 토큰으로 임의의 URL을 처리하려면 ValueChangeHandler를 구현해야합니다. 예를 들어 HyperLink의 설명서를 확인하십시오.

+0

이 정답처럼 보인다. –

+0

올바른 것으로 생각되면 답변을 올바른 것으로 표시 할 수 있습니까? 감사 드리고 싶군요. 또한 앱에 대한 행운을 보냅니다. – Carnell

+0

그것이 작동한다는 것을 증명할 수있는 기회가 생기면 나는 그 대답을 가장 분명히 받아 들일 것입니다. –