La Théorie
Le comportement d'une application web dynamique varie avec le navigateur qui l'utilise.
En effet, selon qu'on utilise Netscape ou Internet Explorer, l'affichage des éléments est différent; et pour ce qui est du code à utiliser, la terminologie des objets et des fonctions applicables est souvent incompatible: En bref, ce qui marche sous MSIE ne marche pas forcément sous Netscape.(et inversement)
D'autres paramètres comme la plate-forme utilisée ou la taille de l'écran peuvent jouer un rôle dans la présentation d'une page. Si, pour une fenêtre occupant tout un écran de 1024x768, une image de 400x400 peut représenter une illustration, pour une fenêtre couvrant partiellement un écran en 800x600, elle peut presque être considérée comme l'image de fond d'écran! De même, un retour à la ligne sous UNIX se fera par "\n", alors que sous windows il se fera par "\r\n".
Donc, cette leçon va vous permettre d'identifier le client; c'est à dire que la page appelée par le client va inspecter la configuration sur laquelle elle se trouve, déterminer le nom et la version du navigateur, et vous donner la taille de la fenêtre qui lui est réservée.
Syntaxe d'utilisation:
Pour informations:
Tout d'abord, voici quatre boutons qui vont, quand vous les presserez, vous donner les valeurs des propriétés correspondantes de votre navigateur.
function LeClient() {
var agentEnMinuscules = navigator.userAgent.toLowerCase();
this.version = parseInt(navigator.appVersion);
this.netscape = (navigator.appName == 'Netscape');
this.ns2 = (this.netscape && (this.version == 2));
this.ns3 = (this.netscape && (this.version == 3));
this.ns4 = (this.netscape && (this.version >= 4));
this.msie = (agentEnMinuscules.indexOf("msie") != -1);
this.ie3 = (this.msie && (this.version == 2));
this.ie4 = (this.msie && (this.version == 4) && (agentEnMinuscules.indexOf("5.") == -1));
this.ie5 = (this.msie && (this.version == 4) && (agentEnMinuscules.indexOf("5.") != -1));
this.win = (agentEnMinuscules.indexOf("win")!=-1);
this.unix = (agentEnMinuscules.indexOf("x11")!=-1);
this.mac = (agentEnMinuscules.indexOf("mac")!=-1);
this.amiga = (agentEnMinuscules.indexOf("amiga") != -1);
this.trucmuch = (agentEnMinuscules.indexOf("trucmuch") != -1);
}
var leClient = new LeClient();
La fonction LeClient() est un exemple de ce que vous pouvez faire pour identifier le client de l'application; si vous désirez étendre l'identification à d'autres systèmes d'exploitation ou à d'autres navigateurs il suffit de les rajouter dans son code. (Dans l'exemple, amiga et trucmuch n'ont été déclarés que pour illustrer l'extension à d'autres systèmes.)
Toutefois, l'usage le plus courant consiste à différencier MSIE de Netscape, à partir de leur version 4.
La version 4 de ces navigateurs peut être considérée comme étant la première qui accepte le DHTML via les CSS.
Pour ces versions, comme Netscape est seul à reconnaître les objets "layers" et MSIE, les objets "all",les deux lignes de code suivantes permettent de faire cette différenciation:
netscape = (document.layers)? true:false; MSIE = (document.all)?true:false;
Ces deux lignes pourront faire partie de la fonction LeClient(), ou introduite directement dans votre page HTML comme dans l'exemple ci-dessous
<SCRIPT LANGUAGE="JavaScript">
Netscape = (document.layers)? true:false;
MSIE = (document.all)?true:false;
if(Netscape)
{
alert("vous utilisez Netscape 4 ou supérieure!");
}
if(MSIE)
{
alert("vous utilisez MSIE 4 ou supérieure!");
}
</script>