Description du système de l'usager
JavaScript vous permet d'identifier les caractéristiques majeure
du système employé par votre visiteur. Ainsi, il est possible
de personnaliser l'affichage du site afin de l'optimiser. Ceci est utile
puisque certaines caractéristiques de JavaScript agissent différemment
selon le navigateur employé, particulièrement dans les anciennes
versions. Les propriétés de l'objet navigator sont appCodeName,
appName, appVersion, platform et userAgent. La méthode
disponible est javaEnabled().
Détection du navigateur
Les propriétés suivantes sont utiles afin d'identifier le
navigateur du visiteur. appCodeName donne le nom de code correspondant
au navigateur, par exemple "Mozilla" qui est le code de base standard.
appName indique le nom réel (ex : Microsoft Internet Explorer,
Netscape, etc..) et appVersion donne la version du navigateur. La
propriété userAgent fournit un espèce de résumé
des trois précédents.
Exemple :
<script language="javascript">
document.write("Vous utilisez présentement " + navigator.appName
+ " version " + navigator.appVersion);
</script>
Il est important de porter attention à la version des navigateurs
de visiteurs. Lorsqu'on exploite un code HTML dans un navigateur qui ne
la reconnaît pas, les résultats sont imprévisibles.
Il ne faut pas oublier que les premières versions de navigateur à
intégrer JavaScript étaient Internet Explorer 3.0 et Netscape
2.0.
Détecter le système d'exploitation
Souvent, le système d'exploitation peut perturber l'affichage d'une
page puisque le graphisme est différent dans Unix, Windows et Macintosh.
La propriété platform de l'objet navigator indique le système
d'exploitation de l'usager.
Déterminer si Java est activé
Les utilisateurs ont la possibilité dans leur navigateur de désactiver
l'exploitation du langage JavaScript. Si Java est désactivé,
aucun code Java ne peut être exécuté. La méthode
navigator.javaEnabled() retourne true si java est activé.
Une bonne manière d'utiliser cette information serait de fournir un
version allégée sans java aux utilisateurs qui l'ont désactivé
de leur navigateur. Ceci donne un temps de chargement minime.
Les cookies
Maintenant que vous savez manipuler les strings
et les vecteurs associatifs (avec des strings comme indice), vous pouvez
penser à faire des cookies. Les cookies sont un ensemble d'informations
que vous pouvez laisser sur le disque dur d'un usager et qui reste dans son
ordinateur même après qu'il ait quitté votre site et
éteint son ordinateur. Les cookies sont utiles lorsque vous voulez
avoir accès à des informations sur les usagers qui reviennent
souvent sur votre site. Avant de continuer plus loin, si certaines personnes
utilisent encore MSIE 3 / Netscape 3 ou moins, il faut updater vos versions
pour tester les cookies.
Il faut savoir ceci à propos des cookies
avant d'en faire un usage abusif :
1- Ce n'est pas tous les internautes qui ont un navigateur qui accepte
les cookies. (la plupart l'ont cependant)
2- Ce n'est pas tous les internautes qui voudront accepter vos cookies.
(la plupart le feront)
3- Chaque domaine sur Internet peuvent allouer seulement 20 cookies.
4- Cookies ne doivent pas dépasser 4KB. Ce qui représente
environ 4000 caractères.
Créer un cookie
Pour faire un cookie, il suffit de créer une string puis l'affecter
à la variable membre (objet) document.cookie. Cependant, une
string d'un cookie ne doit pas contenir d'espaces, de deux points ou de
points-virgules. Pour coder et décoder les cookies, il faut utiliser escape() et
unescape(). J'expliquerai ces méthodes à la section
14.5 Codage de caractères
.
Pour faire un cookie qui garde en mémoire
le nom de l'usager, on peut s'y prendre de cette manière que je détaillerai
:
Exemple :
function CreerCookie()
{
var nom= prompt("Quel
est votre nom?", "");
var leCookie= "mystick_javascript="
+ escape("nom:" + nom);
document.cookie= leCookie;
}
La ligne : var leCookie="mystick_javascript="
+ escape("nom:" + nom);
Si l'usager entre "suzy lu" comme nom, la string leCookie sera égale
à : mystick_javascript=nom%3Asuzy%20lu
Ce qui signifie que je vais sauvegarder un cookie nommé mystick_javascript
sur le disque dur.
La fonction escape() remplace le deux
points ( : ) par %3A et l'espace entre suzy et lu par %20.
Quand vous voudrez lire le cookie, il faudra rechercher
le cookie nommé mystick_javascript, puis prendre la string
mystick_javascript=nom%3Asuzy%20lu et faire
unescape() dessus. Le unescape()
changera le %3A par un deux points et le %20 par un espace.
Lire un cookie
Exemple :
function LireCookie()
{
var leCookie= document.cookie;
var leCookie= unescape(leCookie);
var couperCookie= leCookie.split(":"); // Coupe la string en deux parties divisées par le :
var nom= couperCookie[1];
alert("Votre nom est
:" + nom);
}
Quand le navigateur ouvre une page Web, il recherche
tous les cookies qu'il peut puis les mets dans le
document.cookie. Si vous voulez que votre cookie contienne plus qu'une
information vous pouvez faire une string aussi longue que voulue jusqu'à
un maximum de 4000 caractères. Un moyen souvent utilisé pour
stocker l'information dans un cookie est de séparer les sections par
des slashs / puis l'information à l'intérieur par des
deux points :
Mais c'est au choix du programmeur, n'importe quel délimiteur peut
être utilisé. Ensuite il est aisé d'utiliser un vecteur
d'association pour décoder l'information.
Multiples cookies
Il est aussi possible de créer de multiples
cookies. Chaque cookie a un nom, tout à l'heure notre cookie se nommait
mystick_javascript. Pour sauvegarder plusieurs cookies, il suffit de leur
donner des noms différents. Si vous créer un nouveau cookie
et le mettez dans document.cookie, cela ne va pas effacer les cookies précédents.
Cependant les deux cookies seront comme concaténés.. il devient
alors difficile de retirer leurs informations.
Exemple :
var premierCookie= "nom=Julie";
document.cookie= premierCookie;
var secondCookie="adresse=principale_est";
document.cookie= secondCookie;
Contenu de document.cookie :
nom=Julie;
adresse=principale_est;
Voici du code, emprunté du site de Webmonkey
qui permet au programmeur d'isoler un cookie spécifique :
Exemple :
function IsolerCookie(p_nom)
{
if ( document.cookie
== "")
return false;
// Il n'y a pas de cookie, on arrête ici
else
{
var premierCaractere, dernierCaractere; // déclarations
de deux variables
var leGrosCookie= document.cookie;
premierCaractere= leGrosCookie.indexOf(p_nom);
// trouve le début du 'nom' du cookie
if (premierCaractere != -1)
{
// si tu as trouvé le cookie
premierCaractere+= p_nom.length + 1;
// saute le 'nom' et '='
dernierCaractere= leGrosCookie.indexOf(';', premierCaractere);
// trouve la fin d'un cookie,
c'est à dire jusqu'au prochain point-virgule
if (dernierCaractere == -1)
dernierCaractere= leGrosCookie.length;
return unescape(leGrosCookie.substring(premierCaractere, dernierCaractere));
}
else
return false;
// il n'y avait pas de cookie de ce nom
}
}
Jusqu'à présent on a vu comment
réaliser des cookies de base. Cependant ce type de cookie sera automatiquement
détruit lorsque l'usager quittera son navigateur.
Quelque fois c'est pour le mieux puisque les domaines n'ont droit qu'à
20 cookies par usager. Cependant si vous souhaitez vraiment enregistrer
les cookies sur le disque dur, vous devez leur donner une date d'expiration,
qui doit être dans un format spécial nommé GMT.
ex : Mon, 27-Apr-1998 00:00:00 GMT
Bien qu'écrire une date en GMT puisse
paraître facile, ce n'est pas vraiment le cas. Il faut connaître
le jour de la semaine à laquelle correspond la date, etc.
Pour simplifier les choses, JavaScript offre un convertisseur de date
en date GMT, le toGMTString();
Exemple :
var laDate= new Date("February 30,
2012");
var laCookieDate=
laDate.toGMTString();
Après avoir établi une date
d'expiration pour votre cookie, vous devez ajouter cette information à
sa déclaration ce qui donne quelque chose comme :
nomDuCookie=nom;expires=date
Donc il suffit d'ajouter le expires=date à la string du
cookie et de séparer les différentes parties de ce dernier
par des points-virgules.
La date d'expiration vous permet aussi de
détruire les cookies que vous ne voulez plus que l'usager possède.
Si vous donnez à votre cookie une date d'expiration qui est déjà
passée, il sera détruit du dosser des cookies. Il y a
deux autres parties d'un cookie que vous devez maintenant connaître
: le path et le domaine.
Chemin d'accès et domaine des
cookies
Par défaut, un cookie ne peut être
lu seulement que par les pages HTML qui sont publiées sur le même
serveur et dans le même dossier (directory) que la page qui a généré
le cookie. Par exemple, si tu as un code JavaScript qui demande le nom de
l'usager et le garde dans un cookie sur la page
" http://sympatico.ca/auto/page1.html ", il est possible que vous désiriez
obtenir cette information sur une autre page de votre site, comme la page
" http://sympatico.ca/ ". Pour permettre cela, vous devez spécifier
un chemin d'accès (path) sur le cookie.
Le chemin d'accès indique le niveau
le plus "haut" de la hiérarchie du site qui peut lire le cookie.
Afin d'ajouter le chemin d'accès au cookie, il suffit de faire
path=/; par exemple si vous voulez que le cookie ne soit accessible
que dans le répertoire "auto" vous ajouterez path=/auto; au cookie.
Un autre point auquel il faut porter attention est le fait que certains
site webs ont plusieurs petits domaines. Par exemple, un site pourrait avoir
des pages comme "livre.mystick.com" puis "livret.mystick.com" et enfin "magazine.mystick.com".
Par défaut si la page "livre.mystick.com" envoie un cookie, uniquement
les pages de ce domaine pourront le lire. Si on voudrait que tous les domaines
de "mystick.com" puissent lire le cookie, on devrait spécifier un domaine
au cookie en lui ajoutant "domain=mystick.com".
Récapitulons en supposant que je veuille
créer un cookie pour la page "https://livre.mystick.com/zozo/nom.html",
que je veux accessible poru tous les domainse de mystick, je devrais faire
quelque chose comme cela :
Exemple :
function CreerCookie()
{
var nomUsager= prompt("Quel
est votre nom? ", "");
var leCookie= "cookie_mystick="
+ escape(nomUsager) + ";";
leCookie= leCookie + "path=";";
leCookie= leCookie + "domain=mystick.com;";
document.cookie= leCookie;
}
Codage de caractères
Lors de leur transfert vers le serveur, certains caractères comme
les espaces et les symboles de ponctuation sont source de problèmes.
Transmits dans leur format actuels, ils généreraient des erreurs
de données incorrectes. JavaScript fournit deux fonctions pour coder
les caractères en les envoyant au serveur et les décoder à
leur réception. Ce procédé des données en assure
l'intégrité.
La fonction escape() sert à coder les caractères, elle
accepte une string contenant le texte à coder. Tout caractère
devant être codé est converti en le remplaçant par le
symbole pourcent ( % ) suivi de la valeur ascii du caractère. Par
exemple, un espace a comme valeur ascii 20 , ainsi "allo lune" serait
codé : "allo%20lune".
Voir
la table ASCII
Le texte peut être ensuite décodé grâce à
la fonction unescape().
Nom de fichier
Au cas où vous ne le sauriez pas encore, les noms de fichier de page
Web ne doivent pas contenir d'espaces. Si vous tenez absolument à
utiliser des espaces dans vos noms de fichier de page, il faut les coder
au préalable avec la fonction escape().
Les fonctions escape() et unescape() ne sont pas reliées
à un objet en particulier. Ces fonctions peuvent s'appliquer sur des
caractères, lignes de texte ou même paragraphes entiers. Mais
le codage qu'elles réalisent n'est pas exploitable avec les caractères
Unicode.
|