Lien hypertexte vs d'Ancrage
Lors de l'utilisation de lien Hypertexte et quand utiliser l'Ancre?
Lors de l'utilisation de lien Hypertexte comment gérer les clics?
com.google.gwt.de l'utilisateur.client.l'interface utilisateur.Lien hypertexte.addClickHandler(ClickHandler) est obsolète
com.google.gwt.de l'utilisateur.client.l'interface utilisateur.Lien hypertexte.addClickListener(ClickListener) est déprécié en tant que bien.
Doc suggère d'utiliser des Anchor#addClickHandler
, mais comment les utiliser d'Ancrage#addClickHandler
lors de l'utilisation de lien Hypertexte
Veut dire que si j'ai besoin de manipuler cliquez sur j'devriez toujours utiliser Anchor
et de ne jamais utiliser HyperLink
?
Vous devez vous connecter pour publier un commentaire.
La grande question, parce que c'est tellement simple, et pourtant, ouvre de ce que pourrait être un tout nouveau domaine pour beaucoup de GWT programmeurs. J'ai jusqu'-voté à la question juste parce qu'il peut être un grand avantage pour les personnes à explorer ce que GWT peut faire.
D'ancrage est un widget pour le stockage et l'affichage d'un lien hypertexte -- essentiellement le <a> tag. Vraiment pas beaucoup plus passionnant que cela. Si vous voulez que votre page de lien vers un site externe, utilisez l'ancre.
Liens sont également utilisés pour la navigation interne. Disons que j'ai une application GWT qui demande à l'utilisateur de se connecter, donc sur mon premier panneau, j'ai mis un bouton de connexion. Lorsque l'utilisateur clique dessus, je voudrais afficher un nouveau panneau avec des widgets pour recueillir des informations de l'utilisateur, le code pour valider, et puis si validé, reconstruire ce premier panneau de l'utilisateur était sur.
Boutons sont bien, mais c'est un navigateur, et je veux que mon expérience de l'utilisateur à être plus comme une page web, pas une application de bureau, donc je veux utiliser les liens à la place des boutons. Lien hypertexte ne que. Le documentation pour le lien hypertexte décrit ainsi:
Que la deuxième phrase devrait aider à clarifier les choses. Le lien hypertexte est pas la modification de la page dans l'URL de sens (le moyen d'ancrage ne), si l'URL de refléter l'état du programme en affichant le "jeton" associé avec le lien hypertexte ajouté à l'URL de base après une barre oblique. Vous définissez le jeton. Ce serait quelque chose de descriptif comme "login" ou "aide" ou "à propos". Mais ce n'est pas une nouvelle page. Il n'y a aucun autre fichier HTML que vous avez eu à construire pour afficher une page d'aide, par exemple. C'est le état de l'actuel GWT application qui est en train de changer. Même si vous "ouvrir dans une nouvelle fenêtre", vous êtes juste la course de la même application dans un état particulier.
Il ressemble à un lien, mais c'est vraiment un widget qui manipule l'histoire de l'image, qui à son tour vous permet de vous déplacer à l'état de votre application GWT. Vous n'écrivez pas un gestionnaire de clic pour le lien hypertexte widget, mais un changement de valeur gestionnaire pour l'histoire de la pile. Quand vous voyez que les "aide" jeton a été mis sur l'histoire de la pile, votre gestionnaire d'exécuter du code GWT à joindre à la RootPanel un FlowPanel intégré dans le HTML du texte avec votre aide. De ce qui est perçu par l'utilisateur comme une "nouvelle page", qui est ce qu'il attend lorsqu'il clique sur un lien hypertexte. L'URL sera quelque chose.html/aide. Maintenant, prétendre qu'il retourne à cette adresse URL à l'aide du bouton de retour, pas de lien hypertexte. Pas de problème. Vous n'avez pas de soins sur le lien hypertexte, cliquez sur. Vous ne se soucient que, d'une certaine manière, l'histoire de la pile des changements. Votre changement de valeur gestionnaire des feux de nouveau, et fait la même chose qu'avant pour afficher le panneau d'aide. L'utilisateur bénéficie de l'expérience de la navigation à travers les pages web, même si vous et je sais qu'il y a seulement une page web et que vous y attacher et de détacher des panneaux à l'RootPanel (ou autre système que vous utilisez pour afficher votre GWT panneaux).
Et cela conduit à un bonus sujet.
Ce bonus est un peu plus compliqué, mais, ironiquement, il pourrait aider à mieux comprendre les liens hypertexte. - Je dire de plus compliqué, mais vraiment, il permet de solidifier cette notion qu'une application GWT est constitué d'une série d'états, et que la page web sur l'écran est tout simplement la perception de l'utilisateur de ces changements d'état. Et c'est Les activités et les Lieux. Les activités et les Lieux abstraction de cette histoire de cadre de la manipulation, de la manutention à l'arrière-plan une fois que vous avez mis en place un mappeur avec une GWT-classe fournie conçu à cet effet, vous permettant de briser votre application en une série d'activités, et que l'utilisateur interagit par le biais de ces activités, il est mis dans des endroits différents, et chaque lieu a vue. En outre, l'utilisateur peut se déplacer d'un endroit à l'aide de contrôles de navigateur comme la barre d'adresses, signets, l'historique, et les boutons précédent/suivant, donnant à l'utilisateur une véritable web-comme l'expérience. Si vous voulez vraiment obtenir une poignée sur la différence conceptuelle entre les liens hypertexte et les ancrages, vous devriez essayer d'apprendre ce GWT sujet. Il peut vraiment vous faire changer votre façon de voir vos applications, et pour le mieux.
Hyperlink
(ouInlineHyperlink
) est essentiellement rien de plus qu'une sorte deAnchor
avec unClickHandler
que les appelsHistory.newItem
etpreventDefault()
l'événement (ainsi que le lien n'est pas réellement suivi).En fait,
Hyperlink
ne le fais que si il pense (et oui, c'est seulement une supposition) vous avez cliqué avec le bouton droit ou du moyen-clic (ou ctrl-clic) sur le lien (selon le navigateur), pour ouvrir le lien dans une nouvelle fenêtre ou onglet.Si vous avez besoin de tout autre comportement, puis ne pas utiliser
Hyperlink
et l'utilisationAnchor
à la place. Et si vous le souhaitez, ajouter un comportement à unHyperlink
, puis utiliser uneAnchor
et imiter ce que lesHyperlink
n'. Et vous pouvez réutiliser leHyperlinkImpl
avoir le clic droit/ctrl-cliquez sur la manipulation (voir les liens ci-dessous).Mais en fait, si vous avez besoin de quelque chose qui ressemble à un lien et de faire quelque chose sur un clic, mais ne possède pas de "URL de destination" (c'est à dire qu'il ne devrait pas être cliqué avec le bouton droit/ctrl-clic pour ouvrir dans une nouvelle fenêtre/onglet, ou il ne signifierait rien pour le faire), alors il ne faut pas utiliser un
ANchor
ouHyperlink
, utiliser unLabel
quelle que soit la place, et la faire ressembler à un lien (mais bon, peut-être devriez-vous utiliser unButton
et ont-il ressembler à un bouton; utilisé Google pour avoir le lien de ressemblance boutons –comme le "rafraîchir" un lien/bouton dans GMail– et les a modifiées pour ressembler à des boutons quand ils ne sont vraiment pas les liens).Voir aussi https://groups.google.com/d/msg/google-web-toolkit/P7vwRztO6bA/wTshqYs6NM0J et https://groups.google.com/d/msg/google-web-toolkit/CzOvgVsOfTo/IBNaG631-2QJ
Hyperlink
, mais à partir de votre commentaire que je devrais utiliserAnchor
🙂Hyperlink
niAnchor
sont appropriées. Ce que @steve-j essayais de dire, c'est qu'avec leHyperlink
, le lien n'est pas "suivi" par le navigateur (en raison de lapreventDefault()
fait en interne), mais ça va faire unHistory.newItem
qui va changer l'URL de hachage (en fait "pousser" à la "pile" dans l'histoire). AvecAnchor
, à moins que vouspreventDefault()
dans unClickHandler
, le navigateur de suivre le lien et accédez à l'URL donnée.