Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :
Simuler la saisie avec Javascript
Nous poursuivons la découverte des petites friandises qu'il est possible de développer pour le Web avec le
code Javascript . Avec cette nouvelle
astuce , nous proposons d'accueillir l'internaute avec un texte qui donne l'illusion de s'inscrire comme s'il était tapé par des mains humaines.
Dans l'exemple illustré par la capture, un texte de bienvenue se dévoile progressivement lettre après lettre. Mais les
intervalles de temps ne sont pas réguliers pour donner l'illusion de quelques hésitations commises au clavier.
Sources de travail
Pour la mise en place de cette nouvelle
astuce Javascript , nous proposons de développer à partir d'une
page Html existante et préparant quelque peu le travail.
La décompression livre le
fichier de la page Web (index.htm). Ses ressources l'accompagnent dans les sous dossiers.
Double cliquer sur le fichier index.htm pour l'exécuter dans le navigateur Web par défaut,
Nous découvrons une page Html similaire à celle de la présentation. Cependant, son cadre est vide. Il n'accueille aucun texte et forcément aucune animation.
A la racine du dossier de décompression, cliquer droit sur le fichier index.htm ,
Dans le menu contextuel qui suit, choisir de l'ouvrir avec un éditeur comme le Notepad++,
La portion qui nous intéresse est située dans la partie inférieure du
code Html . Elle débute à partir du
calque d'identifiant auCentre qui héberge lui-même un
calque d'identifiant message .
...
<div id="conteneur">
<div id="contenu">
<!--
Implémentation
-->
<div id="auCentre">
<div id="message">
</div>
</div>
</div>
</div>
...
C'est ce
calque d'identifiant message qui doit accueillir le
texte animé pour qu'il s'affiche dans le cadre aux bords arrondis.
Plus bas encore dans le code, vous notez l'amorce d'un
code Javascript .
...
<script type="text/javascript" language="javascript">
var texte = "Bonjour et Bienvenue dans cette nouvelle aventure !";
</script>
...
A ce stade, il se contente de
déclarer la variable mémorisant le
texte à animer .
Initialiser les variables
Avant de penser Ã
animer le texte , nous avons besoin de connaître sa longueur pour pouvoir le découper caractère à caractère et restituer les lettres les unes après les autres jusqu'à la dernière. De plus, nous avons besoin d'un compteur capable de progresser au fil de l'animation pour amorcer la découpe du texte toujours un caractère plus loin.
A la suite du code Javascript , ajouter les deux déclarations de variables suivantes :
<script type="text/javascript" language="javascript">
var texte = "Bonjour et Bienvenue dans cette nouvelle aventure !";
var longueur = texte.length;
var indice=0;
</script>
C'est la
propriété length d'une
variable de type texte qui retourne le
nombre de caractères contenus dans la chaîne. Cette information numérique, nous la stockons dans la
variable longueur . Ensuite, nous déclarons une
variable numérique pour le compteur. Fort logiquement, nous l'initialisons à zéro pour amorcer la découpe des lettres à restituer à partir de la première.
Initialiser la fonction d'animation
Maintenant pour
simuler la saisie du texte dans le
calque d'identifiant message , l'
astuce consiste à créer une
fonction appelée récursivement à intervalles de temps variables. A chaque appel, le rôle de cette fonction sera de restituer une lettre supplémentaire.
A la suite du code Javascript , ajouter les instructions suivantes :
<script type="text/javascript" language="javascript">
var texte = "Bonjour et Bienvenue dans cette nouvelle aventure !";
var longueur = texte.length;
var indice=0;
ecrire();
function ecrire()
{
}
</script>
Nous appelons une
fonction nommée écrire que nous initialisons dans la foulée. Comme son appel est exécuté en dehors des bornes de toute fonction, son
exécution se déclenchera naturellement à la
fin du chargement de la page Web .
Découper le message lettre à lettre
Cette
fonction doit maintenant se charger de restituer les lettres du texte les unes après les autres. Pour les
variables de type texte ,
Javascript offre une méthode permettant de
découper les chaînes sur une longueur à déterminer. Cette
méthode se nomme
substr . En premier paramètre, nous devons lui indiquer la
position de départ dans la chaîne pour la découpe et en second, la
longueur de cette découpe. Celle-ci doit augmenter d'un caractère à chaque appel de la fonction.
Dans les bornes de la fonction , ajouter les instructions Javascript suivantes :
<script type="text/javascript" language="javascript">
var texte = "Bonjour et Bienvenue dans cette nouvelle aventure !";
var longueur = texte.length;
var indice=0;
ecrire();
function ecrire()
{
indice++;
document.getElementById("message").innerText = texte.substr(0,indice);
}
</script>
Nous
incrémentons la
variable indice d'une unité. Elle est donc susceptible de progresser à chaque
appel de la fonction . Ensuite, nous exploitons la
méthode getElementById de l'
objet Javascript document pour pointer sur le
calque d'identifiant message . Rappelez-vous, il s'agit de celui dans lequel nous devons animer le texte. Dès lors, nous enrichissons son contenu grâce à sa
propriété innerText que nous affectons. Pour cela, grâce à la
méthode substr , nous lui passons une portion du texte, en partant du premier caractère (0) et sur une longueur variable (indice) qui progressera à chaque appel.
Forcément à ce stade, si vous enregistrez les modifications et actualisez la page Web sur le navigateur, seule la première lettre (B) du message s'affiche. La fonction n'est pour l'instant appelée qu'une fois et la variable indice vaut 1, engendrant la découpe seulement de la première lettre.
Animer la saisie du texte
Maintenant, il est question d'appeler cette fonction ecrire en boucle et à intervalles de temps variables. Ainsi, à chaque appel, la variable indice progressera et le texte s'allongera comme s'il était saisi.
Pour cela, Javascript offre une fonction dédiée et toute particulière. Elle se nomme
setTimeout . En premier argument, nous devons lui indiquer les actions à réaliser. Il s'agit de celles de la
fonction ecrire à appeler donc. En second paramètre, nous devons lui indiquer l'
intervalle de temps à partir duquel elle doit relancer ces actions. C'est cet intervalle que nous devons faire varier.
A la suite du code de la fonction, ajouter l'instruction conditionnelle suivante :
<script type="text/javascript" language="javascript">
var texte = "Bonjour et Bienvenue dans cette nouvelle aventure !";
var longueur = texte.length;
var indice=0;
ecrire();
function ecrire()
{
indice++;
document.getElementById("message").innerText = texte.substr(0,indice);
if(indice<longueur)
{
setTimeout(function(){ ecrire() }, Math.random() * 300);
}
}
</script>
En effet, les
appels en boucle doivent se stopper impérativement dès lors que la longueur de la chaîne est atteinte et donc que le message est totalement restitué. C'est pourquoi, tant que cette longueur n'est pas atteinte (indice<longueur), nous exploitons la
fonction setTimeout pour rappeler la
fonction ecrire . Et grâce à la
méthode random de l'
objet Javascript Math , nous réalisons cet appel à chaque fois sur un
intervalle de temps changeant. Cette
méthode génère un
nombre réel aléatoire compris entre 0 et 1. En le multipliant par 300, nous appelons la fonction ecrire au bout d'un temps compris entre 0 et 300 millisecondes.
De ce code, il doit en résulter une apparition relativement saccadée des lettres du message, comme s'il était saisi au clavier. C'est ce que nous proposons de vérifier.
Enregistrer les modifications (CTRL + S) et basculer sur le navigateur Web (ALT + Tab),
Rafraîchir la page à l'aide de la touche F5 du clavier,
Les lettres du message apparaissent en effet les unes après les autres et de façon saccadée.