5546 sujets

Sémantique web et HTML

Bonjour.

J'ai une petite controverse (insoluble) avec un autre membre d'Alsa. C'est à propos de target="_blank" et target="new". Dans un fil de discussion, s'il fallait ouvrir un lien dans un nouvel onglet, je préconisais d'utiliser target="new", bien que non standard, au lieu de target="_blank".

Pourquoi ?

Tout d'abord, la dernière fois que j'ai utilisé target="_blank", il y a plusieurs années, cela ouvrait une page dans une nouvelle fenêtre. J'ai donc utilisé target="new" pour ouvrir une page dans un nouvel onglet. Jusqu'à cette toute récente controverse, j'ignorais que target="_blank" ouvrait non plus une ouvelle fenêtre mais un nouvel onglet, et, curieusement, après un recherche Google avec les mots-clés "target="_blank" "target="new"", je n'ai rien trouvé de probant (et le Validateur HTML du W3C ne relève pas target="new" comme erreur.

Vous apprécierez, je suppose, la clarté de l'information de Mozilla Developer Network (https://developer.mozilla.org/fr/docs/Web/HTML/Element/a)

a écrit :
_blank : charge la réponse dans un nouveau contexte de navigation.

... Mais, me dit en substance mon contradicteur, target="_blank" ouvre une page dans un nouvel onglet... mais pas nécessairement dans tous les navigateurs ou dans toutes les configurations de navigateurs (je ne comprends pas ce dernier point).

Et le problème que je soulève avec target="_blank", c'est que :

- si le navigateur est configuré pour afficher à l'ouverture d'une nouvelle session les onglets ouverts au cours de la session précédente,
- si un lien avec target="_blank" ouvre, avec certains navigateurs et certaines configurations de navigateurs, une page dans une nouvelle fenêtre et non dans un nouvel onglet,
- si l'utilisateur (non avancé - et même, une erreur est toujours possible) dudit navigateur (qui souhaite conserver ses onglets ouverts au fil des sessions) ferme en premier la fenêtre initialement ouverte de son navigateur et en second la fenêtre ouverte avec un lien avec target="_blank", il perdra tous ses précieux onglets - en tout cas, ça marche comme ça sur Firefox, où j'ai déjà vu la chose se produire chez certains utilisateurs - vous me pardonnerez, j'espère, de ne pas avoir fait le test sur mes divers browsers).

Donc, faute de savoir avec quels navigateurs, versions de navigateurs (je pense aux utilisateurs de Windows XP, qui n'ont plus accès aux dernières versions des navigateurs) et configurations de navigateurs un lien avec target="_blank" ouvrira une page dans un nouvel onglet ou une nouvelle fenêtre, pour ouvrir une page dans un nouvel onglet, faut-il, dans l'état actuel, utiliser target="_blank" ou target="new", considérant les problèmes que cela peut poser aux utilisateurs qui n'ont pas le bon browser, la bonne version du browser ou la bonne configuration du browser ?

Je sollicite donc vos lumières sur ce problème.

Et, petite question subsidiaire, pourquoi y a-t-il un underscore dans target="_blank" ?

Pour lire le début de la controverse :

https://forum.alsacreations.com/topic-20-81735-1-Ouverture-dun-PDF-dans-un-nouvel-onglet-gt-bloque-sous-Safari.html

Et, IMHO, compte tenu du peu d'infos sur le sujet (en tout cas, j'en ai trouvé peu, et pas de décisives), un petit tuto sur le sujet ne me semble pas inutile.

Bonne journée.
Modifié par thierry (12 Sep 2017 - 12:05)
Bonjour,

Personnellement j'opte pour target="_blank" (sachant qu'en règle général, ouvrir un nouvel onglet / une nouvelle fenêtre est une mauvaise idée, mais c'est un autre sujet et c'est d'ailleurs le point numéro neuf des 10 erreurs de webdesign selon Jakob Nielsen (en anglais)).

La définition sur MDN et le comportement que tu décris me paraissent clairs et souhaitables pour la simple et bonne raison que c'est l'utilisateur qui définit dans son navigateur s'il préfère qu'un nouveau lien ouvre un onglet ou une fenêtre.

Et par principe, je cherche à respecter les préférences de l'utilisateur quand il peut en émettre, au lieu de le piéger dans un comportement qu'il cherche peut-être à éviter.
a écrit :
La définition sur MDN et le comportement que tu décris me paraissent clairs et souhaitables pour la simple et bonne raison que c'est l'utilisateur qui définit dans son navigateur s'il préfère qu'un nouveau lien ouvre un onglet ou une fenêtre.

Je suis fatigué de cet argument :

1. c'est l'utilisateur qui définit dans son navigateur s'il préfère qu'un nouveau lien ouvre un onglet ou une fenêtre : JE SUIS D'ACCORD, JE SUIS ENTIÈREMENT D'ACCORD, mais si le commanditaire d'un site à finalité commerciale le demande, parce qu'il souhaite que ses visiteurs ne quittent pas son site ou, au moins, puissent toujours y revenir, c'est son droit, même si c'est néthiquement discutable.

2. Ce n'est pas un argument pour user du target="_blank" ou du target="new", mais je ferai remarquer qu'une flopée d'utilisateurs ignorent purement et simplement le clic droit (ou ne l'utilisent pas pour des raisons qui m'échappent. L'Utilisateur omniscient aux motivations insoupçonnables et pour lequel il faut prévoir tous les cas de figure n'existe pas.

À titre d'exemple, j'ai selon une enquête de l'association belge La Ligue des Familles, fin 2015 :
- un belge sur deux ne savait pas faire un paiement sur le web
- un belge sur cinq ne savait pas envoyer un e-mail
- un belge sur trois ne savait pas consulter les horaires des transports publics sur le web
- quatre belges sur dix ne savaient pas remplir sa déclaration d'impôts en ligne
- un belge sur trois ne savait pas utiliser un traitement de texte

Et des gens comme ça, j'en connais. Malheureusement.

Résultats d'une recherche en vitesse :

http://www.rtl.be/info/belgique/societe/un-belge-sur-deux-ne-sait-pas-faire-un-paiement-par-internet-et-un-sur-cinq-est-toujours-incapable-d-envoyer-un-e-mail--846924.aspx

http://www.7sur7.be/7s7/fr/4134/Internet/article/detail/2843824/2016/08/30/Un-Belge-sur-cinq-ne-sait-toujours-pas-envoyer-d-e-mail.dhtmlhttp://www.7sur7.be/7s7/fr/4134/Internet/article/detail/2843824/2016/08/30/Un-Belge-sur-cinq-ne-sait-toujours-pas-envoyer-d-e-mail.dhtml
[/url]

Désolé, je n'ai pas les chiffres pour la France, donc, OK, vous pouvez vous lâcher sur les belges.

Et enfin, je ne comprends rien à la définition donnée sur MDN, à part que "ça dépend".

Désolé si je peux paraître désagréable Smiley decu
Modifié par thierry (12 Sep 2017 - 13:50)
Modérateur
a écrit :
1. c'est l'utilisateur qui définit dans son navigateur s'il préfère qu'un nouveau lien ouvre un onglet ou une fenêtre : JE SUIS D'ACCORD, JE SUIS ENTIÈREMENT D'ACCORD, mais si le commanditaire d'un site à finalité commerciale le demande, parce qu'il souhaite que ses visiteurs ne quittent pas son site ou, au moins, puissent toujours y revenir, c'est son droit, même si c'est néthiquement discutable.

Non c'est bien l'utilisateur seul qui décide, si votre client souhaite choisir onglet ou nouvelle fenêtre, c'est comme s'il souhaitait que la terre tourne à l'envers.

Oui, je suis personnellement contre les liens forcé dans un nouveau contexte.
Oui, je le fait régulièrement pour mes clients sur leur demande sans même chercher à contre-argumenter.
Non, onglet vs nouvelle fenêtre n'est pas un choix à notre disposition.

Au passage, target="new" n'existe pas vraiment. target peut prendre les valeurs suivantes: _blank, _self, _parent, _top, ou le nom cible de la fenêtre ou de la frame. Si cette dernière n'est pas trouvée, le navigateur ouvre habituellement un nouveau contexte. Utilisé ainsi target="new" est strictement équivalent à target="monpetitponey". (Le nom de la fenêtre peut être donné en javascript grâce à window.name ou en ouverture de pop-up).
a écrit :
Non c'est bien l'utilisateur seul qui décide, si votre client souhaite choisir onglet ou nouvelle fenêtre, c'est comme s'il souhaitait que la terre tourne à l'envers.

a écrit :
Au passage, target="new" n'existe pas vraiment. target peut prendre les valeurs suivantes: _blank, _self, _parent, _top, ou le nom cible de la fenêtre ou de la frame.

Je sais et je suis d'accord.

Le problème est : si je dois le faire parce que le commanditaire l'exige, comment savoir si un lien avec target="_blank" ouvrira une page dans un nouvel onglet ou ans une nouvelle fenêtre, sachant que l'ouverture dans une nouvelle fenêtre peut amener l'utilisateur a perdre les onglets ouverts de sa fenêtre initiale, s'il a configuré son navigateur pour afficher les onglets ouverts à la session précédente, puisque le navigateur affichera à sa réouverture les onglets de la dernière fenêtre fermée.

Ce qui m'importe, dans un contexte ou je serais contraint de faire ouvrir des pages dans un nouvel onglet, c'est de ne pas porter préjudice à l'utilisateur, et pour moi, cela prime sur le strict respect des standards (Le sabbat est fait pour l'homme, et non l'homme pour le sabbat, et tout ça).
Modérateur
thierry a écrit :
Le problème est : si je dois le faire parce que le commanditaire l'exige, comment savoir si un lien avec target="_blank" ouvrira une page dans un nouvel onglet ou ans une nouvelle fenêtre

Et comme je l'ai dit, et d'autres ici:

ON NE PEUT PAS
peut importe ce que souhaite votre client ou vous désir ou non de respecter les standard ou une période de jeûne de 6.66 jours avant le cycle menstruel de votre cousine, ce n'est pas possible.

ça s'ouvrira parfois dans un onglet, parfois dans une nouvelle fenêtre, parfois dans quelque chose de plus ésotérique.
a écrit :
ON NE PEUT PAS
peut importe ce que souhaite votre client ou vous désir ou non de respecter les standard ou une période de jeûne de 6.66 jours avant le cycle menstruel de votre cousine, ce n'est pas possible.

Donc, si je reformule, on peut le faire (ça marche), mais c'est mal.

Comment tu imposes ça à des clients ?

a écrit :
ça s'ouvrira parfois dans un onglet, parfois dans une nouvelle fenêtre, parfois dans quelque chose de plus ésotérique.

<humour>dans une boule de cristal ?</humour>

Ben, c'est bien dommage...
Modifié par thierry (12 Sep 2017 - 23:03)
En fait ce que tente de t'expliquer kustolovic est qu'il n'est pas possible d'avoir un contrôle sur cela. Ce sont des paramètres du navigateur configurables seulement et uniquement par l'utilisateur.
C'est comme si tu voulais lui faire télécharger un fichier dans un dossier précis sur son disque.
Merci de ta réponse aussi concise que précise, Zelalsan.

J'avoue qu'avec certaines interventions, je ne sais pas déterminer si le "on ne peut pas" relève de raisons techniques ou de raisons... disons doctrinales ("pas conforme aux standards").

C'est donc clair, techniquement, il n'y a pas de méthode qui garantisse un résultat donné dans tous les browsers et toutes leurs configurations.

Enfin, dommage...
Modifié par thierry (14 Sep 2017 - 16:24)
Si si Thierry !
Juste noter comme le préconise Webtolosa:
Si l’on souhaite garder un code valide w3C (c’est important pour garantir la compatibilité d’affichage entre les navigateurs),
il faut remplacer l’attribut « target » par un petit bout de code java script :
<a href="http://www.lesite.com" target="_blank">Le site</a>

deviendra donc :
<a href="http://www.lesite.com" onclick="window.open(this.href);return false">Le site</a>

…de l’usage d’un purisme modéré ! Smiley cligne
Après, si l'on est pas puriste on pourrait rétorquer que Google lui-même emploi allègrement cette technique (avec Google Image par exemple). Pourtant on pourrait parier que Google préconise l'accessibilité via tout un tas de tutoriels.
Modifié par Olivier C (16 Sep 2017 - 20:02)
Administrateur
Olivier C a écrit :
Après, si l'on est pas puriste on pourrait retorquer que Google lui-même emploi alègrement cette technique (avec Google Image par exemple). Pourtant on pourrait parier que Google préconise l'accessibilité via tout un tas de tutoriel.

Mieux, Google préconise très officiellement tout un tas de Guidelines qu'il n'applique pas lui-même : https://google.github.io/styleguide/htmlcssguide.html Smiley ravi
Modérateur
thierry a écrit :

Vérification faite, il y a aussi des solutions en CSS3... qui ne sont semble-t-il supportées par aucun navigateur majeur :

https://www.w3schools.com/cssref/css3_pr_target-new.asp

https://www.w3.org/TR/2004/WD-css3-hyperlinks-20040224/

Et pour cause, la spec a été abandonnée en 2014: https://www.w3.org/TR/css3-hyperlinks/

Au passage la solution avec window.open ne fonctionne pas mieux: cela a le même effet que target="_blank"
Hello,
Je suis nouveau ici et je voulais vous remercier ce thread ma bien éclairé Smiley cligne
Bonne soirée a vous Smiley smile
Bonjour,

Je suis d'accord avec vos conclusions (ne pas utiliser target="_blank") avec une petite nuance.

Dans certains cas l'utilisateur doit TOUJOURS ouvrir le lien dans un nouvel onglet.
Par exemple, un programme d'administration des ventes avec les produits en lien sur le site public.
Si j'ouvre dans le même onglet je perds ma page d'administration.
Si alors je fais un retour arrière par le navigateur je ré exécute le script précédent ce qui peut être ennuyeux, par exemple créer deux étiquettes pour le même colis.

Bien sûr on peut dire que l'utilisateur est supposé de lui même ouvrir dans un nouvel onglet et surtout ne pas faire de retour arrière s'il a oublié mais tout le monde peut se tromper.

Voilà pour moi un usage de target="_blank" et comme il s'agit d'un programme d'administration non public on se fiche un peu qu'il ne soit pas valide pour le W3C.