JavaScript : Comment recuperer la version du navigateur client ? - Programmation
Marsh Posté le 27-04-2001 à 14:11:16
Regarde bien le script que je te donne, tu verras ce que te retourne les différentes variables en fonction du browser sur lequel la page est exécutée.
------------------ Le Script ------------------
<html>
<head>
<title>Test</title>
</head>
<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<script language="Javascript">
<!--
verStr=navigator.appVersion;
app=navigator.appName;
version = parseFloat(verStr);
document.write(verStr+"<br>" );
document.write(app+"<br>" );
document.write(version+"<br>" );
//-->
</script>
</body>
</html>
-------------------------------------------
Sur IE 5.5
4.0 (compatible; MSIE 5.5; Windows 98)
Microsoft Internet Explorer
4
sur Netscape 4.7 vers En
4.7 [en] (Win98; I)
Netscape
4.7
sous Netscape 6
5.0 (Windows; en-US)
Netscape
5
sous IE 4.01
4.0 (compatible; MSIE 4.01; Windows NT; compat)
Microsoft Internet Explorer
4
---> Maintenant, à toi de penser aux javascript permettant d'analyser correctement cela.
Tu peux utiliser indexOf() pour recherher une occurence dans une chaîne (utile pour IE)
Aller, un script qui check les browsers, ici, dans le cas où le naviguateur n'est pas au moins IE 5.5, tu sera redirigé sur une page appelée : frame.html.
------------------ Le script ------------------
<html>
<head>
<title>Check Browser</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">
<!--
function MM_checkBrowser(NSvers,NSpass,NSnoPass,IEvers,IEpass,IEnoPass,OBpass,URL,altURL) { //v4.0
var newURL='', verStr=navigator.appVersion, app=navigator.appName, version = parseFloat(verStr);
if (app.indexOf('Netscape') != -1) {
if (version >= NSvers) {if (NSpass>0) newURL=(NSpass==1)?URL:altURL;}
else {if (NSnoPass>0) newURL=(NSnoPass==1)?URL:altURL;}
} else if (app.indexOf('Microsoft') != -1) {
if (version >= IEvers || verStr.indexOf(IEvers) != -1)
{if (IEpass>0) newURL=(IEpass==1)?URL:altURL;}
else {if (IEnoPass>0) newURL=(IEnoPass==1)?URL:altURL;}
} else if (OBpass>0) newURL=(OBpass==1)?URL:altURL;
if (newURL) { window.location=unescape(newURL); document.MM_returnValue=false; }
}
//-->
</script>
</head>
<body bgcolor="#FFFFFF" onLoad="MM_checkBrowser(4.0,2,2,5.5,1,2,2,'frame.html','ie55.html');return document.MM_returnValue">
</body>
</html>
---------------------------------------------------
Marsh Posté le 27-04-2001 à 14:15:48
Si ce que tu as mis dans ton message est un copier-coller de ta page, tout s'explique. Tu as écrit = au lieu de == pour la version. Or une affectation retourne surement true. Donc tu passes toujours dans le premier cas.
J'ai eu un cas similaire
Marsh Posté le 27-04-2001 à 14:22:26
bon merci fly LM, mais ça marche toujours pas
voila mon code :
if (navigator.appName == 'Netscape')
{
if (version != 4.7)
{
return true;
}
}
else
return false;
et sous netscape 4.7 ça retourne qd meme true ...
Marsh Posté le 27-04-2001 à 14:48:22
mmmmm bon ok ok ok j'ai rien dis ça marche. ça venait d'un pb de mon cote !
merci pour tout !
Marsh Posté le 27-04-2001 à 09:25:55
Voila je sais je sais, vous allez vous ecriez : ouais c appVersion. oui oui je sais.
mais moi je veux savoir si le navigateur est Netscape (ça c'est fait) mais aussi la version en cours : 4.5 ou inferieur,4.7 ou 6.0. Et là, j'y arrive pas :
function oldNetscape()
{
if (navigator.appName == 'Netscape' && navigator.appVersion = 4.7)
return true;
else
return false;
}
j'ai essayer ça pour voir si c la version 4.7 mais ça retourne true meme pour Netscape 6 ...
merci d'avance :