Fonctionnalités des contrôles serveur Web ASP.NET et du navigateur

Mise à jour : novembre 2007

Des navigateurs différents, et différentes versions du même navigateur, prennent en charge des fonctionnalités différentes. Les contrôles serveur ASP.NET identifient automatiquement le navigateur qui a demandé la page et restituent le balisage approprié pour ce navigateur. Toutefois, certaines fonctionnalités des contrôles ne sont pas prises en charge par les anciens navigateurs. Il est donc recommandé de visualiser la sortie de vos pages sur le plus grand nombre de navigateurs possible pour vous assurer qu'elles s'affichent comme vous le souhaitez dans tous les navigateurs.

Détection automatique du type du navigateur

Par défaut, l'infrastructure de page ASP.NET détermine les fonctionnalités du navigateur en lisant les informations de l'agent utilisateur (user agent) passées du navigateur au serveur au cours d'une requête. (Ces informations sont disponibles en tant que propriété UserAgent de l'objet HttpRequest.) La page compare les informations d'agent utilisateur (user agent) aux entrées d'agent des fichiers de configuration et des fichiers de définition de navigateur.

Remarque :

La section browserCaps des fichiers de configuration (.config) a été désapprouvée dans .NET Framework version 2.0. Pour assurer la compatibilité descendante, les paramètres de configuration de cette section sont toujours en vigueur s'ils sont définis au niveau de l'application, mais ils sont fusionnés avec les informations contenues dans les fichiers de définition de navigateur (.browser) situés dans le dossier %SystemRoot%\Microsoft.NET\Framework\numéroVersion\CONFIG\Browsers au niveau de l'ordinateur ainsi que dans les dossiers App_Browser existants au niveau de l'application. Pour plus d'informations, consultez Schéma du fichier de définition de navigateur (élément browsers).

Lorsqu'elle trouve une correspondance entre les informations de l'agent utilisateur (user agent) et les agents utilisateur répertoriés dans le fichier, elle peut lire les fonctionnalités du navigateur, telles que la prise en charge du script, des styles, des cadres, etc. Selon ces fonctionnalités, les contrôles de la page rendent des contrôles Web en utilisant le balisage approprié, par exemple, XHTML, HTML 3.2, etc. Si ASP.NET effectue un rendu HTML, il peut déterminer s'il faut rendre des éléments HTML récents (compatibles avec les feuilles de style en cascade) ou des versions antérieures (non conformes aux CSS). Pour les navigateurs plus anciens, ASP.NET rend des informations de mise en forme utilisant des éléments (par exemple, un élément font) plutôt que des styles CSS.

Substitution de la détection du type de navigateur

Si vous préférez contrôler explicitement le rendu de la page plutôt que d'utiliser la détection automatique du navigateur, vous pouvez définir la propriété ClientTarget de la page. Vous pouvez définir la propriété de façon déclarative ou par programme comme un attribut de la directive @ Page pour cette page.

La valeur de la propriété ClientTarget est un alias du type de navigateur pour lequel vous souhaitez effectuer le rendu de la page. Par exemple, vous pouvez utiliser l'alias uplevel pour forcer la page à effectuer un rendu pour Microsoft Internet Explorer 6.0. L'alias doit être défini dans la section clientTarget du fichier de configuration. Les valeurs prédéfinies par défaut sont ie5, ie4, uplevel et downlevel.

En spécifiant l'alias downlevel, vous pouvez forcer la page à rendre des éléments compatibles HTML 3.2, quel que soit le navigateur qui a demandé la page. De même, si vous spécifiez uplevel, vous pouvez forcer la page à rendre des attributs de style CSS, y compris pour les navigateurs plus anciens.

Vous pouvez créer d'autres alias en les définissant dans le fichier Machine.config ou Web.config, ce qui vous permet de créer des définitions de navigateur personnalisées. Pour plus d'informations, consultez Paramètres de configuration ASP.NET.

Contrôles et fonctionnalités ASP.NET AJAX

Les fonctionnalités AJAX d'ASP.NET sont compatibles avec la plupart des navigateurs modernes et s'exécutent avec les paramètres de sécurité par défaut pour ces navigateurs. Ces contrôles et ces fonctionnalités requièrent que le navigateur puisse exécuter le script client. Les contrôles UpdatePanel et ScriptManager sont des exemples de contrôles AJAX. Pour obtenir une liste de navigateurs compatibles et de paramètres de sécurité recommandés pour les contrôles et les fonctionnalités AJAX, consultez Paramètres de sécurité de navigateur pour des pages ASP.NET AJAX.

Remarque :

Vous pouvez utiliser les propriétés exposées par l'objet HttpBrowserCapabilities pour déterminer si un navigateur prend en charge ECMAScript (JScript, JavaScript).

Pour obtenir une vue d'ensemble des fonctionnalités AJAX dans ASP.NET, consultez Ajout de fonctionnalités AJAX et clientes.

Script client

Certaines fonctionnalités des contrôles serveur ASP.NET dépendent de la capacité à exécuter les scripts clients. Le script client est généré automatiquement et envoyé en tant qu'élément de la page, si le navigateur est capable d'exécuter les scripts. Même dans ce cas, il se peut que certains utilisateurs aient désactivé l'exécution de scripts dans leur navigateur. Ils ne pourront donc pas bénéficier totalement des fonctionnalités des contrôles. Pour plus d'informations, consultez Script client dans les pages Web ASP.NET.

Utilisation des versions antérieures de navigateurs

Les navigateurs se divisent en deux groupes, que l'on appelle parfois navigateurs « de niveau supérieur » (versions plus récentes) et navigateurs « de niveau inférieur » (versions antérieures). Ces groupes définissent le type de prise en charge native qu'offre un navigateur et déterminent généralement la présentation et le comportement d'une page Web.

Généralement, les navigateurs appartenant au niveau supérieur prennent au moins en charge les éléments suivants :

  • ECMAScript (JScript, JavaScript) version 1.2

  • HTML version 4.0.

  • MSDOM (Microsoft Document Object Model).

  • Feuilles de style en cascade (CSS, Cascading Style Sheets).

Les navigateurs et périphériques clients de niveau inférieur prennent uniquement en charge les éléments suivants :

  • HTML version 3.2

Les propriétés de contrôles serveur listées dans le tableau suivant sont rendues différemment selon le niveau du navigateur :

Propriété du contrôle serveur

Comportement du rendu dans les navigateurs de niveau supérieur ou inférieur

AccessKey

Cette propriété ne fonctionnera dans aucun navigateur de niveau inférieur, et ce pour aucun contrôle. Ce n'est pas du HTML 4.0. Cette propriété ne fonctionnera qu'avec Internet Explorer version 4.0 ou ultérieure.

BackColor

Cette propriété ne fonctionne sur les navigateurs de niveau inférieur que pour certains contrôles : Table, Panel, GridView, Calendar et ValidationSummary. Elle fonctionne également pour CheckBoxList, RadioButtonList et DataList, si la disposition se trouve dans un contrôle Table. En général, seuls les contrôles rendus sous la forme d'un élément table peuvent générer en sortie une couleur d'arrière-plan en HTML 3.2, alors que pratiquement tous les contrôles, quel que soit leur rendu, peuvent le faire en HTML 4.0. Pour les contrôles rendus sous la forme d'éléments span, notamment les contrôles Label, les contrôles validateurs et les contrôles de liste en mode Flow, BackColor fonctionne sous Internet Explorer version 5 ou ultérieure mais pas sous Internet Explorer 4.0.

BorderColor

Cette propriété ne fonctionne dans les navigateurs de niveau inférieur que pour les mêmes contrôles basés sur des tables que BackColor. Toutefois, elle est générée en sortie en tant qu'attribut bordercolor, qui ne fait pas partie du standard HTML 3.2. Seuls certains navigateurs prennent en charge cet attribut, notamment Internet Explorer version 3.0 ou ultérieure.

BorderStyle

Cette propriété ne fonctionne sur aucun navigateur de niveau inférieur. Cette propriété n'a pas d'équivalent en HTML 3.2.

BorderWidth

Cette propriété ne fonctionne que dans les contrôles qui effectuent un rendu sous la forme d'élément table HTML (Table, Panel, GridView et Calendar) ou d'élément img (Image, AdRotator). BorderWidth ne fonctionne que sur les navigateurs de niveau inférieur si elle est spécifiée en pixels ; sinon, elle est toujours rendue sous la forme border=1 ou border=0. De même, BorderWidth ne fonctionne avec les contrôles basés sur des tables que si GridLines a une valeur différente de None. En effet, il n'est pas possible de spécifier une bordure sans quadrillage en HTML 3.2. Pour les contrôles effectuant un rendu sous la forme d'éléments span, notamment les contrôles Label, les contrôles validateurs et les contrôles de liste en mode Flow, BorderWidth fonctionnera dans Internet Explorer version 5 ou ultérieure, mais pas dans Internet Explorer 4.0.

CssClass

Cette propriété est toujours rendue comme attribut class, quel que soit le navigateur. La majorité des navigateurs de niveau supérieur reconnaissent l'attribut class.

Enabled

Cette propriété permet de spécifier si un contrôle déclenche les événements et les fonctions qui lui sont associés. Dans Internet Explorer version 4.0 ou ultérieure, lorsque vous attribuez à Enabled la valeur false, le contrôle apparaît comme indisponible et verrouillé pour toute entrée, à l'aide de l'attribut disabled=true.

Font-Bold, Font-Italic, Font-Strikeout et autres propriétés semblables

Ces propriétés sont rendues sous forme d'attributs style pour les navigateurs de niveau supérieur (par exemple, Font-Weight pour le gras et Font-Style pour l'italique) et sous forme d'éléments indépendants (par exemple, b et i) pour les navigateurs de niveau inférieur.

Font-Size

Cette propriété ne fonctionnera pour tous les contrôles dans les navigateurs de niveau inférieur que si vous utilisez des tailles de police nommées (par exemple, Small, Smaller, etc.). Dans les navigateurs de niveau supérieur, cette propriété est rendue en tant qu'attribut style ; dans les navigateurs de niveau inférieur, en tant qu'élément font.

Font-Overline

Cette propriété ne fonctionne sur aucun navigateur de niveau inférieur.

ForeColor

Cette propriété fonctionne sur les navigateurs de niveau inférieur pour tous les contrôles, sauf Image, AdRotator, HyperLink et LinkButton. Pour les navigateurs de niveau inférieur, ForeColor est restitué à l'aide d'éléments font.

Height

Cette propriété ne fonctionne pas sur les navigateurs de niveau inférieur pour les contrôles Label, les contrôles validateurs, les contrôles HyperLink ou les contrôles LinkButton. Height ne fonctionne pas non plus pour les contrôles CheckBoxList, RadioButtonList et DataList si la disposition de ces contrôles a la valeur Flow. Seules les mesures en pixels et en pourcentages fonctionnent.

Pour les contrôles basés sur des tables, la hauteur des tables internes n'est pas restituée pour les navigateurs de niveau inférieur, car l'attribut Height a été désapprouvé dans HTML 4.01. Cela se traduit par une apparence légèrement différente entre le rendu de niveau supérieur et de niveau inférieur. La différence la plus évidente apparaît si le contrôle BackColor est défini sur la propriété SideBarStyle : dans le niveau supérieur, le BackColor semble être de la longueur entière de cette colonne et, dans les navigateurs de niveau inférieur, il est aussi long que requis pour accueillir les boutons de texte.

TabIndex

Cette propriété ne fonctionnera dans aucun navigateur de niveau inférieur, et ce pour aucun contrôle. Cela n'est pas du HTML 4.0. Cette propriété ne fonctionnera qu'avec Internet Explorer version 4.0 ou ultérieure.

ToolTip

Cette propriété ne fonctionne sur aucun navigateur de niveau inférieur.

Width

Cette propriété ne fonctionne pas sur les navigateurs de niveau inférieur pour Label, HyperLink, LinkButton, ou les contrôles validateurs. Width ne fonctionne pas non plus pour les contrôles CheckBoxList, RadioButtonList et DataList si la disposition a la valeur Flow. Seules les mesures en pixels et en pourcentages fonctionnent.

Voir aussi

Tâches

Comment : détecter les types de navigateurs dans les pages Web ASP.NET

Procédure pas à pas : développement et utilisation d'un contrôle serveur personnalisé

Référence

ClientTarget

clientTarget, élément (Schéma des paramètres ASP.NET)

HttpBrowserCapabilities

Browser

UserAgent

WebControl

Autres ressources

Programmation de pages Web ASP.NET

Développement de contrôles serveur ASP.NET personnalisés