web-dev-qa-db-fra.com

Est-il possible d'utiliser target = "_ blank" en HTML5?

Je me rappelle avoir lu quelque part qu'en HTML5, il n'était plus correct d'utiliser target="_blank" en HTML5, mais je ne le trouve pas maintenant.

Est-il possible de continuer à utiliser target="_blank"?

Je sais que c'est généralement considéré comme une mauvaise idée, mais c'est le moyen le plus simple d'ouvrir une nouvelle fenêtre pour quelque chose comme un PDF, et cela ne nécessite pas non plus que vous utilisiez JavaScript.

156
Darryl Hein

On dirait target="_blank" est toujours correct. Il est répertorié comme mot-clé de contexte de navigation dans le dernier brouillon HTML5 .

151
mike

C'est bien d'utiliser target="_blank"; Cela a été éliminé en XHTML car le ciblage de nouvelles fenêtres ouvrira toujours l'alerte contextuelle dans la plupart des navigateurs. XHTML affichera toujours une erreur avec l'attribut cible dans une validation.

HTML 5 l'a ramené car nous l'utilisons toujours. C'est notre ami et on ne peut pas lâcher.

N'abandonne jamais.

89
Graham

Bien que le target="_blank" est acceptable en HTML5 , j'essaie personnellement de ne jamais l'utiliser (même pour l'ouverture de fichiers PDF dans une nouvelle fenêtre).

HTML devrait définir le sens et le contenu . Demandez-vous, “la signification de l'élément a changerait-elle si l'attribut target était supprimé?” = Sinon, le code ne devrait pas être inséré dans le code HTML. (En fait, je suis surpris que le W3C l’ait gardé… Je suppose qu’ils ne peuvent tout simplement pas se laisser faire.)

Le comportement du navigateur , en particulier, le comportement interactif avec l'utilisateur, doit être implémenté avec des langages de script côté client tels que JavaScript. Puisque vous voulez que le navigateur se comporte d'une manière particulière, c'est-à-dire en ouvrant une nouvelle fenêtre, vous devez utiliser JS. Mais comme vous l'avez mentionné, ce comportement oblige le navigateur à utiliser JS. (Cependant, si votre site se dégrade gracieusement ou s’améliore progressivement, ou peu importe , alors il devrait tout de même aller bien. Les utilisateurs dont JS est désactivé ne manqueront pas grand chose.)

Cela étant dit, ni l'un ni l'autre n'est la bonne réponse. Quelque part quelque part est l'opinion selon laquelle le mode d'ouverture d'un lien devrait finalement être décidé par l'utilisateur final. Prenez cet exemple.

Vous surfez sur Wikipedia, vous pénétrez de plus en plus profondément dans un terrier de lapin. Vous rencontrez un lien dans votre lecture.

Supposons que vous souhaitiez parcourir rapidement la page liée avant de revenir. Vous pouvez l’ouvrir dans un nouvel onglet, puis le fermer lorsque vous avez terminé (car appuyer sur le bouton "Précédent" et attendre le rechargement de la page prend trop de temps). Ou, si cela semble intéressant et que vous voulez le sauvegarder pour plus tard? Peut-être devriez-vous plutôt l'ouvrir dans un nouvel onglet en arrière-plan et continuer à lire la page actuelle. Ou alors, vous décidez peut-être que vous avez fini de lire cette page. Vous ne devez donc suivre que le lien de l'onglet en cours.

Le fait est que vous avez votre propre flux de travail et que vous souhaitez que votre navigateur se comporte en conséquence. Vous pourriez être assez frustré s'il prenait ce genre de décision pour vous.

Cela dit, les développeurs Web doivent indiquer clairement où leurs liens se dirigent, quels types et/ou formats de sources ils référencent et ce qu’ils font. Les info-bulles peuvent être vos amis (sauf si vous utilisez une tablette ou un téléphone; dans ce cas, spécifiez-les sur le site mobile). Nous savons tous à quel point il est nul d'être pris à un endroit auquel on ne s'attendait pas ou de ne pas laisser se produire quelque chose que nous n'avions pas voulu.

15
chharvey

c'est par le moyen le plus facile d'ouvrir une nouvelle fenêtre pour quelque chose comme un PDF

C'est également le moyen le plus simple de gêner les utilisateurs non-Windows. PDF ouvre parfaitement dans les navigateurs des autres plates-formes. L’ouverture d’une nouvelle fenêtre perturbe également l’historique de la navigation et complique la matière sur des plates-formes plus petites comme les smartphones.

N'ouvrez PAS de nouvelles fenêtres pour des choses comme PDF simplement parce que les anciennes versions de Windows étaient cassées.

12
Homer

La plupart des développeurs Web utilisent target="_blank" uniquement pour ouvrir les liens dans un nouvel onglet. Si tu utilises target="_blank" uniquement pour ouvrir des liens dans un nouvel onglet, il est donc vulnérable aux attaques. Lorsque vous ouvrez un lien dans un nouvel onglet (target="_blank"), la page qui s’ouvre dans un nouvel onglet peut accéder à l’onglet initial et changer d’emplacement à l’aide de la touche window.opener propriété.

Code Javascript:

window.opener.location.replace(malicious URL)

La prévention:

rel="nofollow noopener noreferrer"
4
Vamshi Krishna

Bien que la cible soit encore acceptable en HTML5, elle n’est pas recommandée. Pour créer un lien vers un fichier PDF, utilisez l'attribut download au lieu de l'attribut cible.

Voici un exemple:

<a href="files/invoice.pdf" download>Invoice</a>

Si le nom de fichier d'origine est codé pour un stockage de fichier unique, vous pouvez spécifier un nom de téléchargement convivial en attribuant une valeur à l'attribut de téléchargement:

<a href="files/j24oHPqJiUR2ftK0oeNH.pdf" download="invoice.pdf">Invoice</a>

Gardez à l'esprit que bien que la plupart des navigateurs modernes prennent en charge cette fonctionnalité, certains ne le peuvent pas. Voir caniuse.com pour plus d'informations.

4
kojow7
2
Brendan

Vous pouvez le faire de la manière suivante avec jQuery, cela l'ouvrira dans une nouvelle fenêtre:

<input type="button" id="idboton" value="google" name="boton" /> 

<script type="text/javascript">
    $('#idboton').click(function(){
        window.open('https://www.google.com.co');
    });

</script>