14. Environnement

     ◄ Retour accueil

 

 


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.

 

Hosted by www.Geocities.ws

1