PRATIQUE CLIENTS WEB 
Positionner la sélection sur un lien précis
 
Trois méthodes pour faciliter le parcours d'une suite linéaire de pages.
(21/10/2005)
  Forum

Réagissez dans les forums de JDN Développeurs

Dans certains cas (galerie de photos, slides d'une présentation HTML), on peut souhaite que le visiteur passe d'une page à l'autre en appuyant simplement sur une touche du clavier, et n'ai pas besoin d'utiliser la souris pour cliquer sur le lien "Suivant"....

Plusieurs solutions sont possibles : nous vous en présentons trois, qui varient en complexité.

Tout d'abord, faire appel à l'attribut tabindex. Celui-ci donne à certains éléments choisis un ordre particulier. C'est le plus souvent utilisé pour diriger le visiteur dans le remplissage d'un formulaire, mais rien n'empêche, dans notre cas, de donner un tabindex de 1 au lien "Suivant", qui permet de passer à la page suivante. Seul souci : le visiteur doit utiliser deux touches pour avancer : Tab puis Envoi.

<a href="2.html" tabindex="1">Suivant</a>

On peut également faire appel à un peu de JavaScript. La méthode focus() permet de sélectionner un élément précis de notre fichier HTML. Elle est très souvent utilisée par les moteurs de recherche pour placer le curseur de texte dans le champ de recherche. Ici, on assigne un ID au lien Suivant, et un appel JavaScript se charge du reste. Au chargement, Suivant sera sélectionné, et un simple appui sur Envoi le validera.

JavaScript :
document.getElementById('suiteSlide').focus();

HTML :
<a href="2.html" tabindex="1" id="suiteSlide">Suivant</a>

Enfin, il est possible, au prix d'un peu plus de travail, de donner beaucoup plus de choix au visiteur, c'est-à-dire lui permettre d'utiliser plus de touches du clavier : Espace, Flêche droit, Flêche gauche... Dans le cas d'une galerie, la contrainte sera de préciser dans le fichier JavaScript (externe, bien sûr) le nombre de pages en rotation. Cela permet au code JS de boucler sur le premier slide une fois arrivé au dernier. Nous utilisons ici les Server Side Includes pour récupérer le nom du fichier, qui contient le numéro du slide en cours :

<script>
nombreDeSlides = 6;

// fichier = '1.shtml';
fichier = '<!--#echo var="DOCUMENT_NAME" -->';
slideEnCours = fichier.split('.')[0];
document.onkeyup = touches();
function touches(touche) {
  if (!touche) {
    touche = event;
    touche.which = touche.keyCode;
    }
  switch (touche.which) {
    case 32: // espace
    case 39: // fleche droite
    case 40: // fleche bas
      slideEnCours++;
      if (slideEnCours > nombreDeSlides) {
        slideEnCours = 1;
        }
      location.href = slideEnCours + '.shtml';
    }
  }
</script>
 
Xavier Borderie, JDN Développeurs
 
 
Accueil | Haut de page