9
votes

Créer un lien d'ancrage validé W3C avec cible = "_ vide"

J'ai la pièce HTML suivante qui crée une nouvelle fenêtre lorsque vous avez cliqué sur:

<a href="/path/to/site" target="_blank">glide by the people</a>


2 commentaires

Peut-être que c'est évident envers les autres, mais cette question n'a aucun sens pour moi. Pouvez-vous élaborer un peu?


@Adam - Créez une page HTML simple avec un élément de lien ciblé = "cible =" _ vide ". L'essai de le valider contre le validateur W3C. Vous obtiendrez une erreur (IIRC parce que l'attribut cible est obsolète)


11 Réponses :


9
votes

Utilisez ce DOCTYPE:

<!DOCTYPE html PUBLIC "-//w3c//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhmtl1/DTD/xhmtl1-transitional.dtd"> 


2 commentaires

Y a-t-il un moyen d'obtenir la même fonctionnalité sans recourir au doctype de transition?


Pas sans utiliser JavaScript. (Voir le message par @AJM ci-dessous) Raison pour laquelle cela a été supprimé était due à l'accessibilité et à l'interaction de l'utilisateur. Les utilisateurs veulent un contrôle sur ce contenu, pas des popups. :)



6
votes

En supposant que Strict XHTML, vous lieriez un événement OnClick à l'ancre en question. Quelque chose comme:

<a href="/path/to/my/link" onclick="window.open('/path/to/my/link');return false;">My link</a>


1 commentaires

Grigne mineur: sec! Remplacez l'URL dans le gestionnaire d'événements OnClick avec this.href . En outre, déplacez-vous toute cette chose dans un fichier JavaScript au lieu d'encombrer votre HTML.



1
votes

Vous ne pouvez pas le faire avec la validation stricte W3C.

Les solutions sont:


3 commentaires

1.) Vous ne devriez pas utiliser les noms de balisage comme majuscule. Utiliser des minuscules à la place. 2.) Il existe une erreur syntaxique dans ce code: il y a un signe "supérieur à" avant faux . 3.) Vous devez indiquer clairement que celles-ci sont 2 solutions distinctes dans le code JQuery.


@ Sk8erpeter - Quelle est la raison du n ° 1?


Bien sûr, les deux fonctionnent à JQuery car il gère des balises de manière insensible. C'est plutôt une convention de dénomination; Pour la compatibilité XHTML, vous devez plutôt utiliser des balises minuscules dans le formatage HTML, car xhtml documents ne peut utiliser que des balises minuscules . Vous devez donc également vous tenir à ces conventions dans vos codes JavaScript. :) Voici quelques aspects intéressants et Voici un autre .



5
votes
  1. La validation n'est pas la totalité de la qualité de codage.

  2. Certaines choses sont "standard" dans les navigateurs sans être une norme W3C.

  3. L'utilisation d'un peu de JS est un peu surpuissante lorsque la fonction existe déjà.


11 commentaires

Et si la validation W3C est une exigence standard de codage?


En effet. La validation est un excellent outil, mais ce n'est pas comme W3C, ce sont des dieux qui font tout droit. Les normes ne sont pas parfaites


@Lemurik: Chaque navigateur comprend et accepte la cible = "_ vide". Juste parce que ce n'est pas dans la norme W3C ne le rend pas incorrect.


Tous sont de bons points, mais d'autre part, les normes sont des normes pour une raison. Il existe des raisons de convivialité et d'accessibilité de ne pas utiliser cible = "_ vide". (Il enfreint le bouton arrière, certains agents utilisateur, etc.) forçant de nouvelles fenêtres à ouvrir est une mauvaise idée.


@Machine Cela ne signifie pas que ce n'est pas encore une mauvaise idée.


@Machine - vous manquez mon point. L'utilisateur peut avoir un besoin parfaitement légitime de se conformer au validateur W3C, quel que soit son opinion, votre ou vos mines sur la précision, l'utilité et la bonté dudit validateur.


@Joshua. Montez-le avec le W3C alors. :) Je prends la vue contraire. La gestion de la fenêtre doit être sous le contrôle de l'utilisateur. Qu'en est-il de la visibilité dépréciée? Ne casse pas le bouton de mon dos, mon frère.


@Ghoppe @Lemurik: La norme W3C dit également que l'élément