Javascript
L'objet Navigator
Home

Généralités

Avec l'objet Navigator, on aura la possibilité d'identifier le browser (ainsi que la version de celui-ci) utilisé par le lecteur. Ce qui en maintes occasions sera très utile sinon indispensable pour assurer la compatibilité de vos pages. Les propriétés sont peu nombreuses mais au combien intéressantes mais parfois un peu obscures.


 

navigator.appCodeName

Retourne le nom de code du navigateur.

Cette propriété renvoie toujours "Mozilla". "Mozilla" est un nom de code de Netscape qui l'a utilisé en premier. Microsoft (pour une raison que je vous laisse deviner) l'a également repris. On ne pourra donc pas utiliser cette propriété pour différencier un navigateur de Netscape ou de Microsoft.

document.write("Le code name de votre browser est " +navigator.appCodeName);


 

navigator.appName

Retourne le nom ou la marque du browser soit "Netscape", soit "Microsoft Internet Explorer"

Cette propriété sera plus utile pour faire la différence entre la famille Netscape et la famille Microsoft du browser.

document.write("Le nom ou la marque du browser est " +navigator.appName);


 

navigator.appVersion

Renvoie des informations consernant la version du navigateur, le système d'exploitation de l'utilisateur, un code de nationalité de la version (avec des variantes).

Cette information prend la forme :

2.0 (Win95; I)
releaseNumber(platform,country)
numéro de la version(système d'exploitation, code nationalité de la version)

Autre exemple du numéro de la série "3.0b5" pour Netscape Navigator 3.0, beta version 5.

Le système d'exploitation est celui sous lequel tourne le browser. "Win 16" pour une version 16 bits de Windows, "Win 95" pour une version 32 bits, "Mac 68" et "MacPPC" pour les Macintosh et Power PC (sous Netscape).

Le code de nationalité de la version peut-être " I " pour une version internationale ou "U" pour les versions proprement américaines (sous Netscape).

document.write("Les informations sur la version sont "+navigator.appVersion);


 

navigator.userAgent

Renvoie également des informations (sur le header envoyé dans le protocole HTTP du server de votre visiteur).

document.write("Le browser a comme user-agent name "+navigator.userAgent);


 

Passage en revue des troupes

Le petit script, appliqué aux browsers usuels (sous Windows), donne les résultats suivants :

<HTML>
<BODY>
<SCRIPT LANGUAGE="javascript">
document.write("Le code name de votre browser est " +navigator.appCodeName);
document.write("Le nom ou la marque du browser est " +navigator.appName); document.write("Les informations sur la version sont "+navigator.appVersion); document.write("Le browser a comme user-agent name "+navigator.userAgent);
</SCRIPT>
</BODY>
<HTML>

Il est judicieux de remarquer que la longueur du string retourné varie d'un browser à l'autre.

Netscape 2.0

Le code name de votre browser est Mozilla
Le nom ou la marque du browser est Netscape
Les informations sur la version sont 2.0 (Win95; I)
Le browser a comme user-agent name Mozilla/2.0 (Win95; I)

Netscape 3.0

Le code name de votre browser est Mozilla
Le nom ou la marque du browser est Netscape
Les informations sur la version sont 3.0Gold (Win95; U)
Le browser a comme user-agent name Mozilla/3.0Gold (Win95; U)

Netscape 4.0 (Communicator)

Le code name de votre browser est Mozilla
Le nom ou la marque du browser est Netscape
Les informations sur la version sont 4.01 [en] (Win95; I)
Le browser a comme user-agent name Mozilla/4.01 [en] (Win95; I)

Microsoft Explorer 3.0

Le code name de votre browser est Mozilla
Le nom ou la marque du browser est Microsoft Internet Explorer
Les informations sur la version sont 2.0 (compatible; MSIE 3.0A; Windows 95)
Le browser a comme user-agent name Mozilla/2.0 (compatible; MSIE 3.0A; Windows 95)

Microsoft Explorer 4.0

Le code name de votre browser est Mozilla
Le nom ou la marque du browser est Microsoft Internet Explorer
Les informations sur la version sont 4.0 (compatible; MSIE 4.0; Windows 95)
Le browser a comme user-agent name Mozilla/4.0 (compatible; MSIE 4.0; Windows 95)


 

Exemples

Les scripts pour connaître le browser de l'utilisateur sont nombreux et dépendent un peu de l'inspiration de l'auteur. En voici quelques uns que nous détaillons.

Vous remarquerez que l'on utilise souvent indexOf() car la longueur du string retourné varie d'une version à l'autre.

Pour des instructions sous Netscape 3 ou 4

var nm=navigator.appName+navigator.appVersion; if(nm.indexOf("Netscape3.")>-1||nm.indexOf("Netscape4.")>-1) ...

Ici l'auteur assemble dans la variable nm les informations retournées par appName et appVersion. Avec indexOf, on voit si Netscape3 ou Netscape4 est inclus dans nm. Si oui, sa position sera 0 ou supérieur. Si la référence n'est pas trouvée, la valeur retournée sera -1.

Pour savoir si le browser tourne sous Windows

On peut employer if (navigator.appVersion.IndexOf('Win')>-1) { ...
Avec indexOf, on teste la position du string partiel Win dans le string retourné par AppVersion. Si Win est trouvé cette position sera notée de 0 à une position déterminée et donc supérieure à -1. Si Win n'est pas touvé la position retournée sera de -1 et la condition ne sera pas remplie.

Pour savoir si le browser est Explorer 4.0

var ms = navigator.appVersion.indexOf("MSIE")
ie4 = (ms>0) && (parseInt(navigator.appVersion.substring(ms+5, ms+6)) >= 4)

Avec indexOf, on note sous la variable ms, la position de MSIE dans le string retourné par app.Version. Si MSIE n'est pas trouvé (donc Netscape), ms vaudra -1.
On donne à ie4 la valeur true, si d'abord ms est supérieur à 0 (de la famille Microsoft) et si le caractère 4 ou supérieur est bien trouvé en position ms+5 du string retorné par app.version.

Pour distinguer du Javascript 1.0 et du 1.1

Seuls Netscape 2.0 et Explorer 3.0 supportent le Javascript commun, appelé depuis Javascript 1.0. Seuls ces deux browsers ont dans leur userAgent, le chiffre 2.0 (vou pouvez vérifier...).
Ainsi, un test pour déterminer si 2. est bien présent dans le string retourné par userAgent fera l'affaire. Le test devient :
var test=navigator.useAgent;
if(test.indesOf("2.") != -1) {...