Schéma du fichier de définition de navigateur (élément browsers)
Mise à jour : novembre 2007
Les fichiers de définition de navigateur contiennent des définitions pour les navigateurs individuels. Au moment de l'exécution, ASP.NET utilise les informations de l'en-tête de demande pour déterminer le type de navigateur qui a fait la requête. Ensuite, ASP.NET utilise des fichiers browser pour déterminer quelles sont les fonctions du navigateur et comment restituer le balisage sur ce navigateur. Cela est utile aux développeurs de site Web qui souhaitent créer des applications qui peuvent être affichées sur des appareils mobiles, en utilisant des adaptateurs de contrôle qui adaptent le comportement d'un contrôle serveur Web ASP.NET en fonction du type d'appareil. Pour plus d'informations, consultez les liens de la section Voir aussi.
Remarque : |
---|
Les fichiers de définition de navigateur ont été introduits dans .NET Framework version 2.0 Dans les versions précédentes du .NET Framework, l'élément browserCaps servait à définir des définitions de navigateur dans les fichiers de configuration. |
L'élément browsers utilise la structure suivante.
<browsers>
<browser id="browser name"
parentID="parent browser name"
refID="reference ID">
<identification>
<userAgent match="regular expression"
nonMatch="regular expression" />
<header match="regular expression"
name="header name"
nonMatch="regular expression" />
<capability match="regular expression"
name="capability name"
nonMatch="regular expression" />
</identification>
<capture>
<userAgent match="regular expression" />
<header match="regular expression"
name="header name" />
<capability match="regular expression"
name="capability name" />
</capture>
<capabilities>
<capability name="capability name"
value="capability value" />
</capabilities>
<controlAdapters markupTextWriterType="type name">
<adapter adapterType="name of adapter class"
controlType="name of control class" />
</controlAdapters>
<sampleHeaders>
<header name="header name"
value="header value" />
</sampleHeaders>
</browser>
<gateway id="gateway ID"
parentID="parent browser ID">
<!-- Same child elements as for <browser>.
<identification></identification>
<capture></capture>
<capabilities></capabilities>
<controlAdapters></controlAdapters>
<sampleHeaders></sampleHeaders>
-->
</gateway>
<defaultBrowser id="Default"
parentID="parent browser ID"
refID="reference ID" >
<!-- Same child elements as for <browser>.
<identification></identification>
<capture></capture>
<capabilities></capabilities>
<controlAdapters></controlAdapters>
<sampleHeaders></sampleHeaders>
-->
</defaultBrowser>
</browsers>
Attributs et éléments
Élément |
Description |
||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
adapter |
Spécifie un mappage entre un contrôle serveur Web ASP.NET et l'adaptateur utilisé pour le restituer dans le navigateur actuel. Par exemple, la définition suivante du navigateur NokiaMobileBrowserRainbow contenu dans le fichier Nokia.browser spécifie que les contrôles serveur Menu sont adaptés au navigateur à l'aide de la classe d'adaptateur de contrôle MenuAdapter :
Le tableau suivant décrit les attributs requis qui sont contenus dans l'élément adapter.
L'élément adapter ne contient pas d'éléments enfants. |
||||||||||||
browser |
Définit une seule définition de navigateur. Le tableau suivant décrit les attributs pouvant être contenus dans l'élément browser.
Une définition de navigateur doit définir l'attribut refID ou les attributs id et parentID à la fois.
L'élément browser peut contenir zéro ou un des éléments enfants suivants :
|
||||||||||||
browsers |
Représente l'élément racine obligatoire d'un fichier browser. |
||||||||||||
capabilities |
Définit des valeurs de fonction à définir pour la définition de navigateur actuelle. Pour obtenir la liste de fonctions de navigateur fortement typées, consultez les propriétés de la classe HttpCapabilitiesBase. La plupart de ces propriétés utilisent la casse mixte dans les fichiers de définition de navigateur. Vous pouvez également ajouter vos propres valeurs de fonction. L'élément capabilities ne contient pas d'attributs. L'élément capabilities peut contenir zéro ou plusieurs des éléments enfants suivants :
|
||||||||||||
capability (élément enfant de capabilities) |
Définit une seule valeur de fonction à définir pour la définition de navigateur actuelle. Par exemple, les fonctions suivantes sont définies pour la définition de navigateur IE dans le fichier IE.browser. Cet exemple de définition hérite d'autres fonctions de la définition de navigateur Mozilla dans le fichier Mozilla.browser. Les valeurs qui contiennent du texte à l'intérieur d'un signe dollar suivi d'accolades ($ {}) sont remplacées par les valeurs capturées dans l'expression correspondante dans l'élément enfant userAgent de l'élément identification"^Mozilla[^(]*\([C|c]ompatible;\s*MSIE (?'version'(?'major'\d+)(?'minor'\.\d+)(?'letters'\w*))(?'extra'[^)]*)".
L'élément capability contient les attributs requis suivants.
L'élément capability ne contient pas d'éléments enfants. |
||||||||||||
capability (élément enfant de identification ou capture) |
Spécifie que la valeur d'une fonction de la classe du navigateur parent doit être comparée à une expression régulière. Par exemple, la définition suivante du navigateur IE5to9 contenu dans le fichier IE.browser utilise un élément capability pour spécifier que le paramètre de la fonction majorversion de la définition parente IE doit correspondre à l'expression régulière incluse afin que cette définition de navigateur soit comparée au navigateur du client. Cet exemple de définition de navigateur inclut des éléments capability qui s'ajoutent ou remplacent des éléments dans la définition parente.
Le tableau suivant décrit les attributs contenus dans l'élément capability. L'attribut match ou nonMatch doit être défini, mais pas les deux.
L'élément capability ne contient pas d'éléments enfants. |
||||||||||||
capture |
Définit des informations sur les autres éléments header, userAgent ou capability à utiliser pour capturer des informations sur le navigateur. Cela est utile lors d'une tentative de détection des nouveaux navigateurs qui n'étaient pas disponibles lors du lancement du .NET Framework 2.0. Pour capturer des valeurs, une définition de navigateur peut inclure des captures d'expression régulière dans l'attribut match d'un élément identification. Par exemple, l'élément userAgent suivant défini dans le fichier IE.browser capture la hauteur de l'écran en pixels à partir de l'en-tête de demande de l'agent utilisateur (user agent).
Une définition de navigateur peut également avoir à capturer des informations supplémentaires en analysant les en-têtes de demande qui ne sont pas utilisés pour distinguer la classe de navigateur. Par exemple, l'élément capture suivant capture le nombre de touches programmables pour un téléphone cellulaire OpenWave. Les touches programmables affichent les menus et les commandes lorsque vous appuyez sur les boutons matériels correspondants sur les SmartPhone Windows Mobile :
L'élément capture ne contient pas d'attributs. L'élément capture peut contenir zéro ou plusieurs des éléments enfants suivants :
|
||||||||||||
controlAdapters |
Définit un adaptateur de contrôle à utiliser pour adapter le contrôle serveur sur le navigateur. Le tableau suivant décrit l'attribut contenu dans l'élément controlAdapters .
L'élément controlAdapters peut contenir zéro ou plusieurs des éléments enfants suivants :
|
||||||||||||
defaultBrowser |
Définit des fonctions de navigateur par défaut dans le fichier Default.browser. Les définitions de navigateur par défaut ne correspondent pas à un navigateur physique spécifique mais sont utilisées par d'autres définitions pour hériter des paramètres. Par exemple, la définition de navigateur Default suivante est contenue dans le fichier Default.browser :
La définition de navigateur par défaut est héritée par beaucoup d'autres définitions de navigateur. Par exemple, la définition suivante du navigateur Panasonic est contenue dans le fichier Panasonic.browser. <browser id="Panasonic" parentID="Default"> Le tableau suivant décrit l'attribut contenu dans l'élément defaultBrowser.
L'élément defaultBrowser peut contenir les mêmes éléments enfants que l'élément browser. |
||||||||||||
gateway |
Spécifie une seule définition de passerelle. Certains navigateurs mobiles sont connectés au serveur Web à travers une passerelle qui peut ajouter ses propres fonctions. Plusieurs éléments gateway peuvent faire référence au même attribut refID. L'élément gateway peut contenir les mêmes attributs et éléments enfants que l'élément browser. Par exemple, la définition suivante pour la passerelle IE3AK est obtenue à partir du fichier IE.browser.
|
||||||||||||
header (élément enfant de identification ou capture) |
Spécifie une expression à partir de laquelle comparer ou capturer un en-tête HTTP spécifique dans la requête. Par exemple, la définition suivante du navigateur Wml contenu dans le fichier Default.browser identifie un navigateur correspondant en comparant l'en-tête Accept à deux expressions régulières.
Le tableau suivant décrit les attributs contenus dans l'élément header. L'attribut match ou nonMatch doit être présent, mais pas les deux.
L'élément header ne contient pas d'éléments enfants. |
||||||||||||
header (élément enfant de sampleHeaders) |
Spécifie un seul exemple d'en-tête pour ce navigateur. Cet élément est facultatif et à titre informatif uniquement. Un simulateur ou un outil de débogage peut utiliser ce jeu d'en-têtes pour émuler le navigateur pour une requête. Le tableau suivant décrit les attributs contenus dans l'élément header.
L'élément header ne contient pas d'éléments enfants. |
||||||||||||
identification |
Définit des informations concernant l'identification de ce navigateur à partir de la requête entrante. L'élément identification ne contient pas d'attributs. L'élément identification peut contenir un ou plusieurs des éléments enfants suivants :
|
||||||||||||
sampleHeaders |
Spécifie un jeu d'exemples d'en-têtes pour ce navigateur. Cet élément est facultatif et à titre informatif uniquement. Un simulateur ou un outil de débogage peut utiliser ce jeu d'en-têtes pour émuler le navigateur pour une requête. L'élément sampleHeaders ne contient pas d'attributs. L'élément sampleHeaders peut contenir zéro ou plusieurs des éléments enfants suivants :
|
||||||||||||
userAgent |
Spécifie une expression à laquelle l'en-tête de l'agent utilisateur d'une requête doit être comparé. Par exemple, la définition suivante du navigateur IE4 contenue dans le fichier IE.browser utilise la chaîne "MSIE 4" pour identifier le navigateur par l'en-tête de l'agent utilisateur qu'il envoie avec la requête.
Le tableau suivant décrit les attributs contenus dans l'élément userAgent. L'attribut match ou nonMatch doit être présent, mais pas les deux.
L'élément userAgent ne contient pas d'éléments enfants. |
Notes
Si aucun des fichiers de définition de navigateur existants ne répond à vos critères, vous pouvez créer de nouveaux fichiers de définition de navigateur en utilisant le code dans la section Exemple ci-dessous.
Note de sécurité : |
---|
Ne téléchargez pas ou n'installez pas de fichiers de définition de navigateur à partir de tiers à moins que leur source ne soit fiable. Examinez un nouveau fichier de définition de navigateur afin de vérifier que tous les espaces de noms inhabituels sont référencés. Pour plus d'informations, consultez Sécurisation de fichiers de définitions de navigateur. |
Les fichiers de définition de navigateur prédéfinis sont stockés dans le répertoire %SystemRoot%\Microsoft.NET\Framework\version\CONFIG\Browsers. Les fichiers de définition de navigateur au niveau de l'application peuvent être placés dans le répertoire App_Browsers de l'application. Dans les deux emplacements, les fichiers de définition de navigateur doivent avoir une extension de nom de fichier browser. Ne modifiez pas les fichiers de définition de navigateur fournis avec ASP.NET car les Service Packs peuvent mettre à jour ces fichiers, remplaçant ainsi vos modifications. Créez plutôt de nouveaux fichiers browser et utilisez l'attribut parentID dans une nouvelle définition browser pour hériter des paramètres ou utilisez l'attribut refID pour ajouter des fonctions à une définition de navigateur existante.
Au moment de l'exécution, les informations du fichier de définition de navigateur sont fusionnées dans une collection de navigateurs connus dans un objet BrowserCapabilitiesFactory. Lorsqu'une requête est faite, ASP.NET identifie le navigateur demandeur à l'en-tête de la requête et compile un objet HttpBrowserCapabilities qui correspond au type du navigateur demandé. Pour cela, commencez avec un dictionnaire vide et appliquez les étapes récursives suivantes à l'arborescence de la définition de navigateur :
Commencez par la définition de navigateur par défaut qui est toujours considérée une correspondance réussie
Fusionnez les valeurs de fonction spécifiées dans cette définition de navigateur dans le dictionnaire de fonctions de ce navigateur Les valeurs spécifiées dans une définition de navigateur substituent les valeurs définies dans un parent
Évaluez chaque définition enfant afin d'établir une correspondance. Pour chaque enfant correspondant, recommencez à l'étape 1. Les définitions de navigateur sont évaluées après les définitions de passerelle. Si l'agent utilisateur correspond à plusieurs définitions de navigateur ou à plusieurs définitions de passerelle, une exception est levée au moment de l'exécution.
L'objet HttpBrowserCapabilities est mis en cache et peut encore être utilisé pour une requête différente faite par le même type de navigateur.
Une application Web peut accéder à l'instance actuelle de l'objet HttpBrowserCapabilities à l'aide de la propriété HttpRequest.Browser. Cet objet est en lecture seule et contient des propriétés pour chaque fonction. Un développeur de site Web peut également générer une classe personnalisée qui hérite de la classe HttpBrowserCapabilities et stocke une instance dans la propriété HttpRequest.Browser.
Les modifications apportées aux fichiers browser situés dans le répertoire App_Browsers invalident le cache et la requête suivante provoquera la recompilation de l'application. Toutefois, si des modifications sont apportées aux fichiers .browser dans le répertoire %SystemRoot%\Microsoft.NET\Framework\version\CONFIG\Browsers, vous devez recompiler manuellement l'application en utilisant l'outil %SystemRoot%\Microsoft.NET\Framework\version\aspnet_regbrowsers.exe ou le recompiler par programme en utilisant la classe BrowserCapabilitiesCodeGenerator.
Remarque : |
---|
L'utilisation de l'élément browserCaps dans le fichier Web.config pour définir des navigateurs est désapprouvée dans le .NET Framework 2.0 mais encore prise en charge. Les données dans cet élément sont fusionnées avec les informations des fichiers de définition de navigateur. |
Lorsqu'un navigateur fait une requête à votre application, les fonctions du navigateur sont stockées dans la propriété Browser. L'identité du navigateur est stockée dans la propriété UserAgent. Les contrôles serveur Web ASP.NET interrogent la liste des fonctions afin de prendre des décisions concernant l'adaptation appropriée du comportement des contrôles de différents navigateurs.
Fonctions
Pour obtenir la liste de fonctions de navigateur fortement typées, consultez les propriétés de la classe HttpCapabilitiesBase. Ces propriétés utilisent la casse mixte dans les fichiers de définition de navigateur. Par exemple, si vous souhaitez spécifier la fonction BackgroundSounds dans votre fichier de définition de navigateur, entrez-la sous la forme backgroundSounds.
Vous pouvez également définir vos propres fonctions.
Une application Web peut récupérer des valeurs de fonction de l'objet HttpBrowserCapabilities de l'une des deux façons suivantes :
En accédant au dictionnaire des fonctions. Vous pouvez utiliser cette méthode pour les fonctions personnalisées.
Par exemple, vous pouvez utiliser le code suivant pour obtenir la valeur de la fonction ECMAScript (JavaScript) du navigateur actuel du client :
String cap_javascript = Request.Browser["javascript"];
En appelant une propriété fortement typée qui encapsule une fonction.
Par exemple, vous pouvez utiliser le code suivant pour obtenir la valeur de la fonction ECMAScript du navigateur actuel du client :
String cap_javascript = Request.JavaScript;
Configuration par défaut
Le .NET Framework est fourni avec des fichiers de définition de navigateur prédéfinis situés dans le répertoire %SystemRoot%\Microsoft.NET\Framework\version\CONFIG\Browsers. Vous pouvez créer des fichiers de définition de navigateur au niveau de l'application dans le répertoire App_Browsers de votre application. Pour plus d'informations sur les répertoires ASP.NET spéciaux, consultez Disposition des sites Web ASP.NET.
L'exemple de code suivant est un extrait du fichier Generic.browser situé dans le répertoire %SystemRoot%\Microsoft.NET\Framework\version\CONFIG\Browsers.
Remarque : |
---|
Ne modifiez pas les fichiers de définition de navigateur existants situés dans le répertoire %SystemRoot%\Microsoft.NET\Framework\version\CONFIG\Browsers. Ceux-ci sont maintenus par le .NET Framework. |
<browsers>
<browser id="GenericDownlevel" parentID="Default">
<identification>
<userAgent match="^Generic Downlevel$" />
</identification>
<capture>
</capture>
<capabilities>
<capability name="cookies" value="false" />
<capability name="ecmascriptversion" value="1.0" />
<capability name="tables" value="true" />
<capability name="type" value="Downlevel" />
</capabilities>
<controlAdapters>
<adapter controlType="System.Web.UI.WebControls.Menu"
adapterType="System.Web.UI.WebControls.Adapters.MenuAdapter" />
</controlAdapters>
</browser>
</browsers>
L'exemple de code suivant est un extrait du fichier WebTV.browser situé dans le répertoire %SystemRoot%\Microsoft.NET\Framework\version\CONFIG\Browsers.
<browsers>
<browser id="WebTV" parentID="IE2">
<identification>
<userAgent match="WebTV/(?'version'(?'major'\d+)(?'minor'\.\d+)(?'letters'\w*))" />
</identification>
<capture>
</capture>
<capabilities>
<capability name="backgroundsounds" value="true" />
<capability name="browser" value="WebTV" />
<capability name="cookies" value="true" />
<capability name="isMobileDevice" value="true" />
<capability name="letters" value="${letters}" />
<capability name="majorversion" value="${major}" />
<capability name="minorversion" value="${minor}" />
<capability name="tables" value="true" />
<capability name="type" value="WebTV${major}" />
<capability name="version" value="${version}" />
</capabilities>
<controlAdapters markupTextWriterType="System.Web.UI.Html32TextWriter">
</controlAdapters>
</browser>
<browser id="WebTV2" parentID="WebTV">
<identification>
<capability name="minorversion" match="2" />
</identification>
<capture>
</capture>
<capabilities>
<capability name="css1" value="true" />
<capability name="ecmascriptversion" value="1.0" />
<capability name="javascript" value="true" />
</capabilities>
</browser>
<gateway id="WebTVbeta" parentID="WebTV">
<identification>
<capability name="letters" match="^b" />
</identification>
<capture>
</capture>
<capabilities>
<capability name="beta" value="true" />
</capabilities>
</gateway>
</browsers>
Exemple
L'exemple de code suivant est un fichier browser vide sur lequel vous pouvez générer. Veillez à ne pas créer de références circulaires dans vos fichiers browser.
<?xml version="1.0" encoding="utf-8"?>
<browsers>
<browser id="NewBrowser" parentID="Mozilla">
<identification>
<userAgent match="Unique User Agent Regular Expression" />
</identification>
<capture>
<userAgent match="NewBrowser (?'version'\d+\.\d+)" />
</capture>
<capabilities>
<capability name="browser" value="My New Browser" />
<capability name="version" value="${version}" />
</capabilities>
</browser>
<browser refID="Mozilla">
<capabilities>
<capability name="xml" value="true" />
</capabilities>
</browser>
</browsers>
Informations sur les éléments
Gestionnaire de section de configuration |
|
Membres de configuration |
|
Emplacements configurables |
Répertoire Browsers racine de l'ordinateur Répertoire App_Browsers au niveau de l'application |
Configuration requise |
Services IIS (Internet Information Services) 5.0, IIS 5.1 ou IIS 6.0 .NET Framework version 2.0 Visual Studio 2005 |
Voir aussi
Tâches
Comment : détecter les types de navigateurs dans les pages Web ASP.NET
Concepts
Fonctionnalités des contrôles serveur Web ASP.NET et du navigateur
Sécurisation de fichiers de définitions de navigateur
Scénarios de configuration ASP.NET
Vue d'ensemble des filtres de périphérique ASP.NET
Vue d'ensemble de l'architecture du comportement des contrôles adaptables
Vue d'ensemble du développement d'applications Web mobiles ASP.NET
Référence
HttpCapabilitiesSectionHandler
deviceFilters, élément (Schéma des paramètres ASP.NET)
mobileControls, élément (Schéma des paramètres ASP.NET)
browserCaps, élément (Schéma des paramètres ASP.NET)