picture picture
avril 27, 2008 JavaScript 8 Commentaires

L’attribut HTML target="_blank" et les standards de validité W3C …

… plus moyen de faire ouvrir une page dans une nouvelle fenêtre avec un code XHTML1 Strict valide… C’était pourtant bien pratique ! Sans entrer dans les polémiques de spécialistes, il y a une petite astuce java script qui permet de contourner le problème « proprement » !



Il y a des milliers de pages et de posts de forums à ce sujet, disons simplement que l’attribut HTML target (qui, rappelons le, servait initialement à définir le cadre de destination pour l’ouverture de la page appelée par un lien) n’est effectivement pas conforme à l’esprit de la révolution XHTML.

En effet celle ci prévoit de séparer totalement le contenu du contenant, le texte et les images par exemple, de leur mise en forme. Or le choix d’un cadre de destination (outre la disparition des cadres !) est une manifestation qui impose une mise en forme à un contenu qui se devrait d’être totalement détachée de toute contrainte d’affichage.

OK… cela dit, la vie quotidienne du webmaster passe souvent par des contraintes un peu plus terre à terre que celles de respecter l’esprit d’un standard ! En particulier, il n’est pas souhaitable d’ouvrir une page extérieure à un site marchand, par exemple, en écrasant la page en cours. On perd un visiteur-client-potentiel, et c’est dur à trouver par les temps qui courent ;)

La solution, si l’on souhaite garder un code valide w3C (c’est important pour garantir la compatibilité d’affichage entre les navigateurs), c’est de 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é ! :p

8 Responses to “L’attribut HTML target="_blank" et les standards de validité W3C …”

8 Commentaires

  1. Kat dit :

    Ouf ! merci, après avoir passé ma soirée à chercher des solutions, la votre fonctionne très bien !

  2. Lyxa dit :

    C’est parfait, thanks pour l’astuce !

  3. webtolosa@Didier LEVY dit :

    :D pour le calendrier … installez un blog dotclear, c’est un widget inclus dans le package !
    Et pour votre première question, il n’y a rien a forcer, si on ne précise rien par défaut un lien s’ouvre en _self, c’est a dire par écrasement sur la même page.

  4. titoun dit :

    merci pour ce petit code … parfaietement comptatible W3C :) :)

  5. Didier LEVY dit :

    Bonjour,

    2 questions :

    Moi, je voudrais simplement FORCER un lien externe à s’ouvrir dans la ^
    même page…

    Comment je fais en HTML – simplissime SVP, je suis débutant !
    =========

    2 – HJe suis jaloux de votre calendrier à gauche du titre de l’article, comment peut on l’obtenir ?

    Merci d’avance,

    Didier

  6. Mustang dit :

    Bonjour

    voila mon soucis :
    Sur un forum en phpbb3 (donc a priori en W3C) j’ai un lien pour que les membres aillent voter sur weborama, alors pour éviter de remplacer la page du forum, j’ai mis votre code (onclick="window.open(this.href);return false") dans la balise <a>, on ouvre bien un nouvel onglet, mais à chaque fois que l’on clique on ouvre un nouvel onglet.

    Auparavant sur un forum phpbb2 j’utilisais le target=_external afin de ne pas ouvrir de nouvel onglet à chaque fois

    Question : Quel code mettre pour remplacer ce target=_external ?

    Merci

  7. webtolosa dit :

    je relève 2 erreurs, Country :)
    – pour ouvrir une page dans un nouvel onglet … il faut un target= »_blank » !
    – et XHTML1 transitionnel … ne valide pas cet attribut target !
    je maintiens donc, au delà de la querelle des puristes, que la majorité des internautes n’étant pas encore très à l’aise avec les navigateurs (c’est un état de fait et d’expérience commune), ce n’est pas inutile de garder une solution de rechange « sous le coude » dans certains cas d’utilisation grand public. Comme c’est le cas de la plupart des sites marchands ;)

  8. Country dit :

    Ou tu utilise un doctype XHTML 1.0 Transitional et tu pourra continuer à utiliser le fameux target="_blank"

    De plus, l’argument comme quoi on va perdre un visiteur/client si on ouvre pas une nouvelle fenêtre est ridicule. L’utilisation de target est mauvaise parce qu’on prend le contrôle du navigateur du client sans lui demander son avis ! Peut être qu’il ne veut pas de nouvelle fenêtre, peut être qu’il veut un nouvel onglet ou je ne sais quoi d’autre. Donc laissez leur le choix, tout simplement.

Commentaire

Name

Mail (ne sera pas publié)

Website

Laisser ces deux champs tels quels :
:D :-) :( :o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: