COURS JavaScript


Accueil | Redirection en fonction de la version et du type du navigateur : deuxième méthode par if imbriqués

Redirection en fonction de la version et du type du Navigateur : deuxième méthode par if imbriqués



Principe

Vous trouverez le principe à la rubrique Redirection du client en fonction du nom et de la version de son navigateur.

Ici, nous étudierons seulement le principe de l'utilisation des "if" imbriqués, sur le même exemple. Ça n'est qu'une autre manière de faire la même chose, mais en se compliquant la vie pour rien. Cependant, sur le plan pédagogique, ça apprend le fonctionnement des "if" imbriqués. Et c'est une bonne chose.

 
 
 



Comment ça marche

Pareil que dans la rubrique Redirection du client en fonction du nom et de la version de son navigateur.

Le fonctionnement est le même, seule la programmation change.

 
 



Explications détaillées et exemple 

Toutes les explications détaillées se trouvent à : Redirection du client en fonction du nom et de la version de son navigateur
Pour ceux et celles qui n'auraient pas encore vu ce que sont les tests en JavaScript, il serait bien qu'ils aillent d'abord voir la leçon correspondante : Les tests.

Le script JavaScript se présente comme suit :

L'exemple et les explications concerneront les clients qui doivent être redirigés vers la bonne page suivant qu'ils ont un Navigateur de version 4.0 minimum ou non et selon que ce soit NS (Netscape) ou MIE (Microsoft Internet Explorer) ou bien encore d'autres navigateurs quelque soient leur versions..

Dans cet exemple, j'ai choisi (délibérément) de commencer à tester si le Navigateur client est de version 4 ou supérieure. Notez bien que nous aurions pu commencer par tester si c'était Netscape ou MIE d'abord. Ça n'aurait rien changé au problème. La structure et le nombre de tests à effectuer aurait été exactement les mêmes.

function detectversion() { // début de la fonction de détection (1)

var OuAller = ""; // vide la variable OuAller (1.1)
var NomNav = navigator.appName; // place le nom du navigateur dans la variable NomNav (2)
var VersNav = navigator.appVersion; // place la version du navigateur dans la variable VersNav (3)
var NumVers = parseFloat(VersNav); // Transforme la chaîne littérale en valeur numérique (3.1)

if (NumVers >= 4) { // teste si version >= à 4 (4)

    if (NomNav == "Netscape") { // teste si NS (5)
        OuAller = ("Pagens4.htm"); // page pour NS vers >=4
     } // fin si NS
    if (NomNav == "Microsoft Internet Explorer") { // teste si MIE vers >=4
        OuAller = ("Pagemie4.htm"); // page pour MIE >=4
     } // fin si MIE

}else{ // si pas sup ou egal à 4 (6)

     if (NomNav == "Netscape") { // teste si NS (7)
        OuAller = ("Pagens3.htm"); // page pour NS vers <4
     } // fin si NS
     if (NomNav == "Microsoft Internet Explorer") { // teste si MIE vers <4
        OuAller = ("Pagemie3.htm"); // page pour MIE >=4
     } // fin si MIE

} // fin si >=4 (7.1)


if (OuAller == "") { // si autre, rien de tout ça (8)
OuAller = ("PageAutre.htm"); // met la bonne page dans OuAller
} // fin du test

alert("Le nom de votre Navigateur est : " + NomNav+ "\nSa Version complète est : " + VersNav + "\nSon numéro de version est : " + NumVers + "\n\nQuand vous cliquerez sur Ok, vous serez branché sur la version du site correspondant à la bonne version de votre navigateur.\n\nPour le moment, votre page vient de : " + document.location); //

document.location = OuAller; // Redirige sur la bonne page

} // Fin de la fonction

(1), (1.1), (2), (3), (3.1)

Tout ceci est exactement la même chose que dans les explications de la rubrique Redirection du client en fonction du nom et de la version de son navigateur. Allez la voir si vous abordez la redirection pour la première fois avec cette page ci.

(4)

Ici, au lieu d'employer l'opérateur logique "ET" (qui s'écrit && en JavaScript, je le rappelle) pour tester plusieurs choses à la fois, nous séparons les problèmes les uns des autres. On test d'abord si le navigateur est d'une version supérieure ou égale à 4, ou non par la structure de test :

if (NumVers >= 4) { // teste si version >= à 4 (a)

}else{ // si pas sup ou egal à 4 (b)

} // fin si >=4 (c)

Si le résultat de ce test est vrai, c'est à dire si la version du Navigateur utilisé est supérieure ou égale à 4, le programme exécutera les instructions contenues entre (a) et (b) (entre le if et le else). Si le résultat du test est faux, c'est-à-dire que la version du Navigateur utilisé est inférieure à 4 (n'est pas supérieure ou égale à 4), alors ce sont les instructions contenues entre (b) et (c) qui seront exécutées (entre le else et la fin du if). Ca, nous le savons déjà après avoir étudié la leçon sur les tests. Si vous n'êtes pas à l'aise avec les tests, allez y faire un saut.

De cette manière, nous isolons les deux principaux cas de figure de notre sélection. Il ne nous reste plus qu'à voir quoi faire dans les deux cas.

(5)

Nous sommes ici dans la partie des instructions qui seront exécutées si le résultat du test sur la version est vrai. C'est-à-dire si la version du Navigateur est supérieure ou égale à 4. Dans ce cas de figure, il nous faut regarder si il est de type NS ou MIE, de manière à le rediriger automatiquement vers la bonne page développée spécialement pour lui.

    if (NomNav == "Netscape") { // teste si NS
        OuAller = ("Pagens4.htm"); // page pour NS vers >=4
     } // fin si NS
    if (NomNav == "Microsoft Internet Explorer") { // teste si MIE vers >=4
        OuAller = ("Pagemie4.htm"); // page pour MIE >=4
     } // fin si MIE

Pour ce faire, nous n'avons pas d'autres solution que de tester successivement (comme dans la première méthode des "if successifs") l'un puis l'autre cas. Vous reconnaissez ce que nous avons déjà fait pour la Redirection du client en fonction du nom et de la version de son navigateur première méthode. Simplement, au lieu de tester avec le "ET" logique la version ET le type, nous n'avons plus qu'à tester seulement le type puisque nous sommes dans la partie où nous savons déjà que le Navigateur utilisé est d'une version supérieure ou égale à 4. Dans chaque cas, il faut mettre l'adresse de la bonne page HTML dans OuAller.
Remarquez bien que continuer à imbriquer des "if" ne servirait à rien dans la mesure où nous voulons aussi isoler les navigateurs qui ne répondraient à aucun de nos critères.

(6)

Nous arrivons ici au début de la partie du test sur la version qui sera exécutée si et seulement si le résultat du test est faux. C'est-à-dire si le Navigateur utilisé n'est pas de version supérieure ou égale à 4.

}else{ // si pas sup ou egal à 4

Souvenez vous, c'est ce que nous avons vu en (4).

(7)

Ici, même chose qu'en (5), mais pour les Navigateurs qui ne sont pas d'une version supérieure ou égale à 4..

     if (NomNav == "Netscape") { // teste si NS
        OuAller = ("Pagens3.htm"); // page pour NS vers <4
     } // fin si NS
     if (NomNav == "Microsoft Internet Explorer") { // teste si MIE vers <4
        OuAller = ("Pagemie3.htm"); // page pour MIE >=4
     } // fin si MIE

Dans chaque cas, il faut mettre l'adresse de la bonne page dans OuAller.

(7.1)

Ne pas oublier l'accolade fermante } qui marque la fin du test principal sur la version du Navigateur utilisé. Comme nous l'avons vu en (4).

(8)

A partir de là, nous avons très exactement la même chose que ce que nous avons étudié dans la rubrique Redirection du client en fonction du nom et de la version de son navigateur avec les "if successifs". Nous testons si OuAller est vide, ce qui voudrait dire que le Navigateur utilisé n'est aucun de ceux qui nous intéresse.

Cliquez ici pour voir fonctionner cet exemple
   


 


Ce cours est enseigné par Philippe Médan 
dans le cadre de la formation des professionnels de l'INTERNET.
au CREFAC , 14 rue Scandicci, 93000 Pantin. Tél. : 01 48 46 51 99
au GITA-GRETA , Lycée Technologique Diderot 61, rue David D'Angers 75019 Paris Tél. : 01 40 40 36 27
au CESI à l'Ecole des ingénieurs, 116 Av Aristide Briand, BP 57, 92224 Bagneux CEDEX Tél. : 01 45 36 70 00
au CFA-AFIA Centre de Formation par l'Apprentissage spécialisé en Informatique DUT Licence MIAGE,
PUIO - Bâtiment 640 - Plateau du Moulon - 91405 Orsay Tél. : 01 69 15 35 19.

© Philippe Médan 1999-2007. Tous droits de reproduction réservés pour tous pays.