Un moteur de recherche en JavaScript

Pour faciliter la navigation à l'intérieur d'un site, voire sur un certain nombre de sites, on peut utiliser une bibliothèque de liens hypertextes (URL) associés à des mots-clés.
La base de données peut par exemple être préparée par VB ou VBA en parcourant les pages du site et en en récupérant le titre, l'URL et les mots clés.
La recherche dans la base peut, quant à elle, utiliser JavaScript.

L'exemple suivant montre comment on peut, avec quelques lignes de JavScript, effectuer la recherche des sites contenant un mot-clé dans la base :

Les informations (liste des URL et de leurs mots clés) sont stockées dans la page HTML sous forme de liens hypertexte pointant sur l'URL et ayant pour nom (NAME) une chaine de caractères comprenant le titre du site et ses mots clés, par exemple :
<BR><A HREF="Structure_macro.html" NAME="structure de la macro (mots clés = macro, procédure, sub, enregistreur_de_macro, enregistreur, commentaires)"></A>
<BR><A HREF="TCD.html" NAME="bases de données (mots clés = excel, base_de_données, sous-totaux, tcd, tableau_croisé_dynamique, consolidation, requête, requête_internet, lien_hypertexte, sendmail, mail, messagerie, bourse)"></A>
<BR><A HREF="tangram.html" NAME="tangram en vba (mots clés = excel, vba, macro, animation, tangram, déplacer, rotation, shapes, onaction)"></A>
...

Aucun texte n'étant inscrit entre les balises <A> et </A>, cette liste n'est pas affichée à l'écran.

La recherche est lancée par cle=prompt("tapez le mot clé à rechercher dans la base") qui invite l'utilisateur à saisir le mot clé qu'il stocke dans la variable cle.
La réponse du moteur, txt, est élaborée simplement en parcourant l'ensemble des liens de la page à l'aide d'une boucle :
for (num=1;num<=document.links.length;num++)
et en y recherchant le mot-clé :
if (document.links[num-1].name.indexOf(cle)>-1)
Chaque lien contenant le mot-clé est ajouté au texte de réponse :
txt=txt+"<A HREF='"+document.links[num-1].href+"'>"+document.links[num-1].name+"</A><BR>"
Une fois l'ensemble des liens balayé, il suffit d'afficher le texte réponse dans un nouveau document par : document.write(txt).
La page dans son ensemble se présente donc comme suit :
<HTML><HEAD><SCRIPT>
function liste() {
cle=prompt("tapez le mot clé à rechercher dans la base")
txt="<HTML><BODY>";
for (num=1;num<=document.links.length;num++)
{if (document.links[num-1].name.indexOf(cle)>-1)
{txt=txt+"<A HREF='"+document.links[num-1].href+"'>"+document.links[num-1].name+"</A><BR>"}}
txt=txt+"</BODY></HTML>";
document.open();
document.write(txt);
document.close()}
</SCRIPT></HEAD>
<BODY onload="liste()">
<BR><A HREF="Structure_macro.html" NAME="structure de la macro (mots clés = macro, procédure, sub, enregistreur_de_macro, enregistreur, commentaires)"></A>
<BR><A HREF="TCD.html" NAME="bases de données (mots clés = excel, base_de_données, sous-totaux, tcd, tableau_croisé_dynamique, consolidation, requête, requête_internet, lien_hypertexte, sendmail, mail, messagerie, bourse)"></A>
<BR><A HREF="tangram.html" NAME="tangram en vba (mots clés = excel, vba, macro, animation, tangram, déplacer, rotation, shapes, onaction)"></A>
</BODY></HTML>


Attention, cet exemple n'est qu'une ébauche de moteur.
Pour un bon fonctionnement en toutes circonstances, il faudrait prendre en compte de nombreux éléments comme les majuscules, les accents, les apostrophes et les guillemets qui risquent de perturber la recherche. Si le nombre de réponses trouvées par le moteur est trop important, une erreur peut également se produire...

Reste à créer la base de données à partir des pages d'un site Web par exemple.
Cliquer ici pour voir comment cette création de base de mots clés peut être réalisée par VBA sous Excel.

Lancer une recherche

Cliquez ici pour télécharger un modéle un peu plus élaboré (fichier zip 21 ko).
Lancer une recherche.

Cliquez ici pour télécharger un fichier Excel générant un dictionnaire des fonctions JavaScript (fichier zip, 26 ko).
Voir le dictionnaire JavaScript.
Voir aussi le dictionnaire VBA pour Excel.
Et le dictionnaire VBS.