Partager via


Détection des fonctionnalités du navigateur

Même si les navigateurs prennent en charge la plupart des fonctionnalités JScript, les nouvelles fonctionnalités axées sur le .NET Framework, les objets basés sur une classe, les types de données, les énumérations, les directives de compilation conditionnelle et l'instruction const ne sont prises en charge que du côté serveur. C'est pourquoi vous devez utiliser ces fonctionnalités en mode exclusif dans les scripts côté serveur. Pour plus d'informations, consultez Informations de version JScript.

Un script JScript est en mesure de détecter les fonctionnalités du moteur qui l'interprète ou le compile. Cette opération est inutile si vous écrivez du code pour une application côté serveur (qui doit être exécutée dans ASP ou ASP.NET) ou un programme en ligne de commande étant donné que vous pouvez facilement identifier la version JScript prise en charge et le code en conséquence. En revanche, lors de l'exécution de scripts clients dans un navigateur, cette détection est essentielle pour garantir la compatibilité du script avec le moteur JScript du navigateur.

Pour vérifier la compatibilité JScript, vous avez la possibilité d'utiliser les fonctions du moteur de script ou la compilation conditionnelle. Chaque approche comporte ses avantages.

Fonctions du moteur de script

Les fonctions du moteur de script (ScriptEngine, ScriptEngineBuildVersion, ScriptEngineMajorVersion, ScriptEngineMinorVersion) retournent des informations sur la version actuelle du moteur de script. Pour plus d'informations, consultez Fonctions (Visual Studio - JScript).

Pour bénéficier d'une compatibilité maximale, seules les fonctionnalités de JScript Version 1 doivent être utilisées dans une page qui vérifie les versions JScript prises en charge. Si un moteur prend en charge une version de JScript supérieure à la version 1.0, vous pouvez le rediriger vers une autre page qui inclut les fonctionnalités avancées. Cela signifie que vous devez disposer d'une version distincte de chaque page Web correspondant à chaque version de JScript que vous souhaitez prendre en charge. Dans la plupart des cas, la solution la plus efficace consiste à avoir deux pages, l'une conçue pour une version spécifique de JScript et l'autre conçue pour fonctionner sans JScript.

Notes

Le code JScript qui utilise des fonctionnalités avancées doit être placé dans une page distincte qui n'est pas exécutée par les navigateurs disposant de moteurs incompatibles. C'est absolument essentiel dans la mesure où le moteur de script d'un navigateur interprète tout le code JScript contenu dans une page. L'utilisation d'une instruction if…else qui bascule entre un bloc de code utilisant la dernière version de JScript et un bloc de code JScript Version 1 ne fonctionne pas pour des moteurs plus anciens.

L'exemple ci-dessous illustre l'utilisation des fonctions de moteur de script. Dans la mesure où ces fonctions ont été introduites dans JScript Version 2.0, vous devez d'abord déterminer si le moteur prend en charge les fonctions avant de tenter de les utiliser. Si le moteur ne prend en charge que JScript Version 1.0 ou ne reconnaît pas JScript, l'opérateur typeof retourne la chaîne « undefined » pour chaque nom de fonction.

if("undefined" == typeof ScriptEngine) {
   // This code is run if the script engine does not support
   // the script engine functions.
   var version = 1;
} else {
   var version = ScriptEngineMajorVersion();
}
// Display the version of the script engine.
alert("Engine supports JScript version " + version);
// Use the version information to choose a page.
if(version >= 5) {
   // Send engines compatible with JScript 5.0 and better to one page.
   var newPage = "webpageV5.htm";
} else {
   // Send engines that do not interpret JScript 5.0 to another page.
   var newPage = "webpagePre5.htm";
}
location.replace(newPage);

Compilation conditionnelle

Les instructions et les variables de compilation conditionnelle peuvent masquer du code JScript aux moteurs qui ne prennent pas en charge la compilation conditionnelle. Cette approche est utile si vous souhaitez inclure une petite quantité de code de remplacement directement dans la page Web.

Notes

N'utilisez pas les commentaires sur plusieurs lignes dans des blocs de compilation conditionnelle dans la mesure où les moteurs qui ne prennent pas en charge celle-ci sont susceptibles de les interpréter de façon erronée.

<script>
/*@cc_on
@if(@_jscript_version >= 5 )
// Can use JScript Version 5 features such as the for...in statement.
// Initialize an object with an object literal.
var obj = {"a" : "Athens" , "b" : "Belgrade", "c" : "Cairo"};
var key;
// Iterate the properties.
for (key in obj) {
   document.write("The "+key+" property has value "+obj[key]+".<BR>");
}
@else 
@*/
alert("Engine cannot interpret JScript Version 5 code.");
//@end
</script>

Si le bloc @if conditionnel comprend beaucoup de code, il peut s'avérer plus simple d'utiliser l'approche décrite précédemment pour utiliser les fonctions du moteur de script.

Voir aussi

Concepts

Informations de version JScript

Autres ressources

Écriture, compilation et débogage de code JScript

Fonctions (Visual Studio - JScript)

Compilation conditionnelle