web-dev-qa-db-fra.com

Pourquoi la barre d'espace fait-elle une page vers le bas dans les navigateurs

Pourquoi est-ce que space barre faisant une page vers le bas dans certaines applications de visualisation, en particulier les navigateurs et les lecteurs PDF?

Pour moi, cela semble être un peu contre-intuitif, et ce comportement affecte également les jeux et autres applications HTML5 interactives, car si vous mappez une action à la barre d'espace, cela peut également faire défiler la page, ce qui n'est pas ce que vous voulez. De plus, les touches fléchées, le bouton de page suivante et la molette de la souris sont généralement suffisants pour faire défiler la page.

Y a-t-il des raisons historiques ou d'utilisabilité de ce comportement?

64
SztupY

La raison historique est que c'est ce que fait la barre d'espace dans plus , le plus petit démonateur commun (et probablement le plus ancien) des téléavertisseurs de texte. Dans more, il est logique de mapper la plus grande touche du clavier à l'action la plus courante: afficher la page suivante.

À l'époque glorieuse de more, vous ne pouviez pas compter sur les molettes de défilement de la souris, les boutons de page suivante ou parfois même les touches fléchées. more n'a même pas de fonction "page up" (vous ne pouvez pas revenir en arrière).

Bien que dans le monde basé sur le texte, more ait été principalement remplacé par des pagers plus puissants comme less (que peut reculer), cette convention de barre d'espace demeure et a même migré vers le monde de l'interface graphique.

77
Celada

La barre d'espace est la plus grande touche de votre clavier, et est donc la plus facile à interagir avec. Pour cette raison, les applications ont tendance à utiliser la barre d'espace pour:

  • une action simple : lorsqu'aucune entrée, précision ou direction n'est impliquée.
  • une action répétée : la barre d'espace est la plus facile à appuyer plusieurs fois de suite.
  • une action "pardonnable" : si vous appuyez accidentellement dessus, elle est facilement annulable.

Par exemple, l'action principale d'un lecteur multimédia consiste à basculer entre Lecture et Pause. C'est simple (une bascule oui/non), c'est répété (avec des intervalles), et c'est pardonnable (c'est une bascule après tout).

Une action principale du navigateur consiste à faire défiler car le Web est toujours en train de lire du contenu. C'est simple (il suffit de descendre), c'est répété (vous faites défiler étape par étape), et c'est pardonnable (vous pouvez utiliser votre souris ou vos flèches ou même shift + espace pour revenir en arrière).

31
jgthms

Je n'ai aucune preuve que c'est la raison pour laquelle la barre d'espace est utilisée pour la page suivante, mais à l'époque où IBM établissait des normes de conception pour PC (qui influencent encore fortement la conception aujourd'hui), l'original IBM = AT Clavier à 84 touches de 1981 (IIRC) n'avait pas de touches haut/bas de page ou flèches dédiées (ils partageaient le pavé numérique):

enter image description here

Le standard clavier à 101 touches n'est apparu que 3 ans plus tard. Il y avait aussi des concurrents d'IBM et d'étranges alternatives partout, par exemple le MIT Space Cadet , qui n'a pas de page haut/bas, et a les symboles de la main qui ressemblent vaguement à des flèches:

enter image description here

À partir du lien ci-dessus concernant les touches de la main (c'est moi qui souligne):

Pouces vers le haut, le bas, la gauche et la droite. Il n'a jamais été très clair s'il s'agissait de répondre à des questions oui/non ou de naviguer. Dans les groupes qui utilisaient ce clavier, il y avait une aversion culturelle pour les touches fléchées. Pour être honnête, je ne sais plus pourquoi.

Le développement rapide de technologies et d'interfaces nouvelles (et parfois concurrentes) à l'époque a probablement conduit à des années de page haut/bas et les flèches étant une source d'interaction peu fiable/incohérente (et la normalisation n'était pas aussi répandue à l'époque), mais une touche que tous ces claviers avaient en commun était la barre d'espace; il a toujours été là et inchangé.

De plus, la souris n'est pas vraiment tombée dans l'usage général des consommateurs jusqu'à la même époque que le clavier à 101 touches; avec les premiers Mac en 1984, et il a soulevé beaucoup de sourcils. Il a fallu un certain temps avant que la souris ne soit autant un aliment de base qu'aujourd'hui (et même aujourd'hui, une souris est toujours une option; vous êtes beaucoup plus susceptible de trouver un ordinateur sans souris qu'avec sans clavier).

J'imagine que cela combiné avec les points d'utilisation que jgthms soulève dans sa réponse sont les raisons pour lesquelles des programmes comme more (mentionnés dans la réponse de Celada) et d'autres ont utilisé la barre d'espace si fortement - more, par exemple, a été écrit en 1978 , bien avant toute normalisation vraiment significative de touches de clavier supplémentaires. Au fil du temps, il est probablement resté coincé.

21
Jason C

Du point de vue du code source pur, "pourquoi" peut être difficile à répondre.

Dans la dernière WebKit , il n'y a pas de commentaire (ni l'implémentation GTK ni celle EFL):

 case VK_SPACE:
    granularity = WebCore::ScrollByPage;
    if (keyEvent.shiftKey())
        direction = WebCore::ScrollUp;
    else
        direction = WebCore::ScrollDown;
    break;

Rembobinez l'horloge à NCSA Mosaic , pas de commentaire:

  case XK_space:
      XtVaGetValues (win->scrolled_win, XmNverticalScrollBar,
                     (long)(&sb), NULL);
      if (sb && XtIsManaged (sb)) {
          XtCallActionProc (sb, "PageDownOrRight", event, params, 1);
      }
      break;

Revenez plus loin dans Nexus (née WorldWideWeb) vers 1992, où il n'y avait pas de navigation au clavier: la navigation se faisait avec la souris .

WWWLineMode vers 1991 n'a mappé l'espace à rien. Dans WWW/LineMode/Implementation/www.c, la fonction User_Selection n'a aucune référence à la barre d'espace. Cependant, il mappe une nouvelle ligne, c'est-à-dire la touche ENTER à la page suivante!

Sur la base de cet examen, la fonctionnalité a été introduite dans Mosaic. Mais, je n'ai pas pu trouver la source pour Erwise ou ViolaWWW, alors peut-être là.

Compte tenu de cela, le fait que Mosaic était populaire sous Windows et que Windows ait utilisé un clavier IBM AT, l'explication fournie par @JasonC me semble très probable.

11
bishop

Pour moi, cela semble être un peu contre-intuitif, et ce comportement affecte également les jeux et autres applications HTML5 interactives, car si vous mappez une action à la barre d'espace, cela peut également faire défiler la page, ce qui n'est pas ce que vous voulez.

La question principale sur le contexte historique a été couverte par d'autres réponses, mais j'ai pensé qu'il valait la peine de le souligner. (Ce serait probablement un meilleur ajustement en tant que commentaire, mais mon manque de points de réputation m'empêche de commenter.)

La plupart des pages, des jeux ou des applications bien conçus prendront en compte ce problème en empêchant le comportement par défaut de certaines clés (par exemple, en utilisant event.preventDefault () de JavaScript lorsque le jeu ou l'application a le focus). Le focus est le plus souvent gagné par un composant de page lorsqu'un utilisateur a cliqué/touché/navigué vers via l'onglet du composant. Il peut également être attribué par programmation. Bien sûr, si vous avez le contrôle sur la page entière elle-même, vous pouvez empêcher le comportement par défaut de la barre d'espace sur la page entière, pas seulement pour l'application ou le jeu.

4
yohohoho