target="_blank", standards et utilisateur…21/06/2005, corrigé le 10/04/2006
Faut-il ou non ouvrir les liens dans une nouvelle fenêtre ? Voici une question qui revient souvent sur les sites persos, blogs et communautés traitant des standards ou de webmastering ! Les discussions sont souvent enflammées et les avis tranchés. Mais au-delà de la polémique, peut-on réellement recourir à de telles pratiques tout en respectant les standards ainsi que l'utilisateur ? On s'attachera ici d'abord au côté technique avant de voir la problématique utilisateur.
L'attribut target et les standards
Comme vous le savez probablement déjà, on peut forcer l'ouverture d'un lien dans une nouvelle fenêtre en lui ajoutant l'attribut target auquel on donne la valeur "_blank". Cet attribut a toutefois été déprécié en (X)HTML strict. Pourquoi ? Tout simplement parce qu'il s'agit d'une propriété affectant le comportement des documents et que HTML et XHTML stricts mettent l'accent sur la séparation entre contenu, présentation et comportement (ce qui permet notamment une plus grande flexibilité vis-à-vis de l'utilisateur et de son équipement matériel et logiciel).
Mais revenons à nos moutons ! Puisque l'on ne peut utiliser l'attribut target, certains (j'en ai fait partie pendant un temps…) ont pensé résoudre le problème en employant sur les liens un événement javascript de type onclick="window.open(this.href); return false;". Le document (typé strict) passera valeureusement l'épreuve de la validation, cependant l'événement onclick permet la gestion du comportement et nous sommes donc à nouveau en contradiction avec le modèle strict. Quelles sont alors les solutions ?
Des solutions conformes
Si vous avez vraiment besoin d'ouvrir un lien dans une nouvelle fenêtre, une première solution, et probablement la plus évidente même si peu ou pas employée, est d'utiliser un type de document transitionnel. L'attribut target est en effet tout à fait valable en (X)HTML transitionnel ! Cette solution si simple et évidente n'est pas ou peu utilisée généralement parce que, dans le "milieu des standards", un document de type transitionnel ne fait pas bonne impression, fait moins "pro"… et, moi le premier, je me suis laissé entraîné par ce genre de réflexion ! C'est évidemment un peu idiot et dommage de raisonner ainsi d'autant que rien ne vous empêche de coder vos sites au plus près du type strict, en ayant comme unique exception l'ouverture dans une nouvelle fenêtre. De toute façon, vos visiteurs n'en ont pour l'immense majorité rien à faire et ne vous en voudront pas, du moment que votre site reste accessible ! Seuls les intégristes des standards vous feront des réflexions, mais quelle importance…
Si vous souhaitez toutefois vraiment réaliser un document de type strict (que ce soit pour une raison aussi futile que "faire bien" ou aussi "sérieuse" qu'un client intransigeant, ou bien encore parce que vous attachez vraiment beaucoup d'importance à la séparation contenu / présentation / comportement…), il reste la possibilité d'utiliser un javascript non obtrusif qui recensera les liens et déterminera lesquels doivent être ouverts dans une nouvelle fenêtre (notez que si javascript est désactivé, ce qui semble être globalement le cas pour un internaute sur dix, le lien devra s'ouvrir sans problème dans la fenêtre parente). Un bon exemple utilisant l'attribut rel pour les liens avec la valeur "external" est détaillé sur Sitepoint. On a ainsi bien retiré du (X)HTML tout attribut de présentation / comportement, le tout étant maintenant entièrement gérés par CSS et javascript. Mission accomplie !
Et l'utilisateur dans tout ça ?
Que l'on soit pour ou contre l'ouverture des liens dans une nouvelle fenêtre, il faut bien réaliser une chose : les navigateurs permettent de forcer l'ouverture dans une nouvelle fenêtre (et / ou dans un nouvel onglet), mais ne permettent en aucun cas de forcer l'ouverture dans la fenêtre parente. Aucune liberté n'est donc laissée à l'utilisateur quand on prévoit l'ouverture d'un lien dans une nouvelle fenêtre. Certains concepteurs web vous diront que la navigation est alors plus aisée pour l'internaute, qu'il s'y retrouvera mieux (quand il ne s'agit pas tout simplement de retenir le visiteur sur le site). Attention toutefois de ne pas généraliser : il est très difficile, voire impossible, de définir un "utilisateur moyen" ! La seule chose qui compte finalement est de laisser le choix à l'utilisateur…
Il semble donc important d'expliquer aux internautes le régime en place sur le site : ceci a tout à fait sa place dans la page présentant la politique d'accessibilité, ou bien avant d'aborder une section où les liens ont un comportement particulier. Il peut être également intéressant d'expliquer, même succinctement, comment on peut forcer le navigateur à ouvrir dans une nouvelle fenêtre ou un nouvel onglet : les gens n'ont après tout pas tous la même connaissance de l'outil informatique et des logiciels qui leur sont proposés. Plus pratiquement, il est possible de mettre en place une icône après chaque lien s'ouvrant dans une nouvelle fenêtre, ou proposer 2 liens, l'un s'ouvrant dans la fenêtre parente, l'autre (toujours sous forme d'icône) s'ouvrant dans une nouvelle fenêtre. La meilleure solution est peut-être de proposer aux visiteurs, grâce à javascript, des préférences pour le site entier. D'autres solutions peuvent évidemment être envisagées, mais, quel que soit votre choix, pensez aussi à signaler ce comportement spécial aux visiteurs par le biais de l'attribut title.
Les solutions conformes pour l'ouverture de liens dans une nouvelle fenêtre existent donc, mais ayez toujours une pensée pour vos visiteurs ! Dans la mesure du possible, laissez leur le choix, tout en les informant de vos intentions. Si vous en avez la possiblité, n'hésitez pas à leur indiquer comment ouvrir dans une nouvelle fenêtre à l'aide du navigateur : cela rendra forcément service à certains, qu'ils soient internautes débutants ou qu'ils n'aient jamais pris le temps d'étudier leurs navigateurs !
Infos diverses, quelques liens…
Si vous avez des questions ou des remarques, n'hésitez pas à m'écrire. Cet article a été réalisé après avoir lu deux sujets très intéressants sur le forum du site webmaster-hub, ainsi que divers articles lus ça et là sur des sites traitant des standards et de l'accessibilité. Il s'agissait donc plus pour moi d'écrire une synthèse (ce qui m'a d'ailleurs permis de clarifier mes idées et faire le point sur le sujet), tout en y ajoutant subtilement mon point de vue ! Je vous invite donc à lire les sujets et articles suivants, et remets à la fin de cette liste les liens cités dans l'article :
