Des liens javascript plus accessibles
Par Laurentj le vendredi, avril 2 2004, 11:12 - Technologies Web - Lien permanent
Je viens à nouveau de tomber sur un site qui contient des liens en javascript. Sur le onclick de certains liens, un window.open est executé, et sur l'attribut href : rien, mis à part un #.
Une erreur trés courante malheureusement. Je ne rentrerai pas dans le débat trollesque sur faut-il se permettre de forcer l'ouverture d'une nouvelle fenêtre ou pas dans les pages web (Sachez quand même que je suis contre, pour plein de bonnes raisons !). Que l'on soit pour ou contre, il faut savoir qu'il y a quand même des pratiques qui rendent un tant soit peu ce genre de liens accessibles.
En effet, ces liens réalisés n'importe comment :
- m'empêche d'ouvrir la page concernée dans un onglet ou ailleurs
- si le javascript est désactivé, on ne peut suivre le lien (c'est le cas notamment des robots d'indexations...)
Il est pourtant simple de supprimer ces effets néfastes. Plutôt que de faire :
<a href="#" onclick="window.open('test.html')">mauvais lien</a>
Il suffit de faire :
<a href="test.html" onclick="window.open(this.href); return false;">bon lien</a>
On met donc l'URL dans l'attribut href de la balise (quoi de plus normal hein ?!). Sur le onclick, on ouvre une nouvelle fenêtre, en récupérant l'url situé dans l'attribut href (this.href). Ensuite, on retourne la valeur false pour indiquer que l'évènement "clic" ne doit plus se propager, donc qu'il ne soit plus être interpreté par le navigateur, c'est à dire, ne pas faire le traitement par défaut du clic sur une balise a qui est de suivre le lien.
Et si le javascript est désactivé, le lien s'ouvrira quand même, non plus dans une nouvelle fenêtre, mais dans la fenêtre courante (le onclick n'étant plus executé). Quel que soit le contexte, on accéde à la nouvelle page. Et on peu choisir comment on veut ouvrir la page (dans un onglet, nouvelle fenêtre etc..).
Commentaires
Mais alors, si c'est aussi simple, les liens JS de ce genre sont tous des liens générés par des logiciels wysiwyg non ? Pourquoi diable ces logiciels ne génèrent-ils pas des liens accessibles ?
<naïf>Oui, pourquoi ? :)</naïf>
Voir aussi http://blog.dreams4net.com/PopupEtPolemiques et http://blog.dreams4net.com/JavascriptNonIntrusif sur comment faire ce genre de liens.
http://openweb.eu.org/articles/popup/ ;-)
En tapant ce billet, je savais bien que j'allais faire doublon :-) Mais une piqure de rappel ne fait pas de mal.
Ce que j'aime bien dans ta piqûre de rappel, c'est que c'est l'explication la plus claire et la plus concise du javascript en question qu'il m'ait été donné de lire :)
Le probleme du lien direct , c'est qu'il ne permet pas de compter le nombre de visiteurs par exemple. A ma connaissance .. ? Il n'y a pas de solution pour qu'un click active 2 évènements ?? Cad le lien dans <a> et l'évènement dans le Onclick. si quelqu'un connait une solution, je suis preneur.