2009-12-01 8 views
0

Comment créer un lien hypertexte pour la page actuelle déclencher l'événement de modification de l'historique?gwt hyperlien changeEvent

Par exemple, sur http://localhost:8080/index.html#foo il y a un lien hypertexte avec un historyToken de foo. Comment puis-je obtenir l'application pour traiter/déclencher l'événement de clic/modification? Suis-je à la merci de la nature du comportement du navigateur?

Répondre

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

Quelque chose comme ça déclenche cette URL et ajoute à l'histoire

History.newItem("foo", true); 

ce juste ajoute à l'histoire comme une réponse aux actions de l'utilisateur:

History.newItem("foo", false); 

C'est l'installation HistoryListener (onHistoryChanged), et ne réagissez que sur celui-là.

Si l'utilisateur clique sur un lien/va directement aux favoris, répondez depuis onHistoryChanged.

Lorsque l'utilisateur fait quelque chose et que vous avez besoin de changer l'URL, lancez History.newItem (..., true), et répondez à nouveau dans onHistoryChanged.

1

Pour que votre application puisse répondre au clic du Hyperlink, vous pouvez ajouter un ClickHandler au lien hypertexte. Le ClickHandler devrait faire le travail de mise à jour de votre interface d'application, etc. Le jeton d'historique sera automatiquement mis à jour en fonction du jeu de jetons d'historique dans le constructeur du lien hypertexte et la méthode History.newItem() n'a pas besoin d'être appelée.

Pour gérer des URL arbitraires avec vos jetons possibles collés dans le champ URL du navigateur ou mis en signet par vos utilisateurs, vous devez implémenter un ValueChangeHandler. Consultez la documentation de HyperLink pour un exemple.

+0

Cela semble être la bonne réponse. –

+0

Pouvez-vous marquer la réponse comme correcte si vous croyez qu'elle est la bonne. Je l'apprécierais. Aussi, bonne chance avec votre application. – Carnell

+0

Une fois que j'ai l'occasion de prouver que cela fonctionne, j'accepterai très certainement la réponse. –