Les scripts que je présente ici sont utilisés couramment sur les sites que je réalise, ils sont simples à mettre en oeuvre et peuvent rendre des services à tout webmestre.
Lorsque nous voulons que le public arrive sur nos sites, nous sommes confrontés aux moteurs de recherche et aux échanges de bannières.
Pour les échanges de bannière, il faut s'assurer que la personne qui fait un lien vers notre site le fait sur la page d'accueil (et de préférence sans spécifier son nom) et de préférence dans une page complète du butineur et non dans un cadre de son site.
Pour les moteurs de recherche, nous devons faire en sorte que toutes les pages du site soient référencées et que ce référencement permettent d'accéder directement à la page d'accueil plutôt qu'à une autre page du site. De plus, lorsqu'un moteur référence une page qui devrait théoriquement se trouver dans un cadre, celle-ci peut être ouverte directement sans que l'on se méfie et cela casse totalement l'ergonomie du site !
Il existe plusieurs solutions face à ces problèmes, voici celles que je pratique.
Ce script est à utiliser sur les pages d'un site qui utilise des cadres (frame), car il permet de valider d'une façon détournée que la page dans laquelle il se trouve a bien été ouverte en conformité avec ce qui a été défini lors du développement du site.
Utilisez l'évènement onLoad du tag BODY. Celui-ci est exécuté lorsque le source de la page est chargé dans le butineur.
<body onLoad="if ((top.location.protocol != 'file:')
&& (top.location.pathname != '/pprem/')
&& (top.location.pathname != '/index.html'))
{top.location.pathname = '/index.html';}">
top.location.protocol permet de savoir si la page principale du butineur est ouverte depuis internet (valeur 'http:') ou si elle est ouverte à partir d'un fichier (valeur 'file:'). En vérifiant que l'ouverture n'est pas faite à partir d'un fichier, on permet d'ouvrir une page particulière à partir du disque dur lors de la conception du site, ce qui peut-être très pratique.
top.location.pathname vérifie le dossier dans lequel devrait se trouver la page principale du butineur. C'est à omettre si vous avez votre propre domaine et que la page de démarrage se trouve dans la racine de celui-ci, en revanche, sur tous les hébergeurs gratuits, vous devez spécifier votre arborescence complète. On teste une première fois le dossier et une seconde fois la page qui décrit les cadres, en l'occurrence index.html. Cela permet d'appeler la page dans laquelle se trouve ce script depuis la page d'accueil du site ou toute autre page de celui-ci, mais en revanche, si c'est un moteur de recherche qui en est à l'origine, ça ne passe pas et la dernière ligne est activée.
lorsque l'on change la valeur de top.location.pathname, on déclenche le chargement du fichier correspondant en tant que fichier principal du butineur. Ce fichier devrait être soit la page d'accueil du site, soit le fichier qui décrit les cadres.
En pratiquant les moteurs de recherche, on s'aperçoit qu'ils stockent les adresses de toutes les pages d'un site, mais pas leurs signets. En effet, appeler la page toto.htm et la page toto.htm#signet4 ne réagit pas de la même façon dans le butineur, mais les moteurs stockent tous toto.htm. On peut donc se servir de cette remarque afin de faire un site qui une fois enregistré dans un moteur démarrera toujours par la page d'accueil, même si le lien à partir du moteur se fait sur une autre page.
Pour cela, il faut insérer le script suivant après la balise BODY sur les pages qui ne doivent pas apparaître sans être au préalable passé par une autre:
<a name="NomSite"></a> <SCRIPT LANGUAGE="JavaScript"><!-- if (document.location.hash != "#NomSite") {top.location = "index.htm";} // --> </SCRIPT>
Si ce script est sur la page second.htm, voici ce qui se produit:
- en appelant la page second.htm, c'est la page index.htm qui va être ouverte
- en appelant la page second.htm#NomSite, c'est bien elle
que l'on va voir.
Les moteurs de recherche n'appelleront que
second.htm, jamais l'autre.
Dans votre site, vous devez systématiquement préciser le signet NomSite pour
que le lien passe correctement. C'est une grosse contrainte, mais le résultat
est garanti sur de très gros sites.
La solution est simple, ilsuffit de vérifier que le top.document.location correspond bien à l'emplacement de la page ouverte, d'où le script suivant à placer soit sur l'évènement onLoad de la balise BODY, soit en début du corps de la page:
<script language="JavaScript"><!-- if (document.location != top.location) {top.location = document.location;} // --> </script>
Ce script ne fonctionne pour le moment qu'avec des versions récentes d'Internet Explorer, mais je suppose que les autres suivront un jour...
<a href="javascript:window.external.AddFavorite('http://www.lavague.com/','lavague.com, l\'annuaire du commerce électronique')">
ajouter aux favoris
</a>
Le lien vers windows.external fait appel à des fonctions supplémentaires d'Internet Explorer, dans ce cas, AddFavorite ajoute un site (par exemple "http://www.lavague.com/") avec un libellé qui apparaîtra dans les menus du butineur (par exemple "lavague.com, l'annuaire du commerce électronique").
![]()
page modifiée par Patrick Prémartin le mercredi 21 août 2002