Ouvrir une fenêtre en HTML strict

La technique classique pour forcer l'affichage de la cible d'un lien dans une nouvelle fenêtre est l'utilisation de l'attribut target de l'élément a :

<a href="" target="_blank"></a>.

Ce code est correctement interprété par le navigateur. Il est conforme à la norme transitional mais pas à la norme strict.

Afin de respecter la norme strict et ses attendus méthodologiques, on peut utiliser l'attribut rel. Cet attribut sera interprété par le client 1) suivant l'ergonomie souhaitée par les développeurs de l'application Web. Le mode de co-occurrence des contenus des deux pages n'est alors plus limité à la superposition de deux fenêtres. On peut cependant implémenter ce mécanisme “classique” :

<script type="text/javascript"">
function explanationLinks() {   
 if (!document.getElementsByTagName) return;   
 var anchors = document.getElementsByTagName("a");   
 for (var i=0; i<anchors.length; i++) {   
   var anchor = anchors[i];   
   if (anchor.getAttribute("href") &&   
       anchor.getAttribute("rel") == "explains")   
     anchor.target = "_blank";   
 }   
}   
window.onload = explanationLinks;
</script>
...
<a href="options.html" rel="explains">l'option anti-dégorgement</a>

En l'absence de code javascript ou en cas de désactivation de javascript sur le client, on revient au comportement du navigateur nu : effacement de l'ancien contenu et remplacement par le nouveau, dans la même fenêtre.

Ce code javascript illustre le fait qu'il s'agit d'une ergonomie particulière (ouverture dans une autre fenêtre sur activation du lien) pour une sémantique donnée (explains) ; un même document pouvant être appréhendé à travers plusieurs ergonomies, via différents supports, par exemple. Et on peut différencier les mécanismes (en écrivant le code ad hoc) selon les sémantiques.

1) Le navigateur enrichi du code javascript chargé avec la page courante
 
ouvrir_une_fenetre.txt · Dernière modification: 2010/05/28 11:23 par flaz
 
Sauf mention contraire, le contenu de ce wiki est placé sous la licence suivante:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki