# Fonctionnalités du navigateur

À l'ouverture de cette page, une soixantaine de fonctionnalités de la plateforme web sont testées dans votre navigateur actuel, et chacune est marquée comme prise en charge ou non. Aucune demande d'autorisation ne s'affiche et rien n'est envoyé nulle part.

## En bref

Cette page exécute 61 tests de fonctionnalités dans votre propre navigateur, répartis en neuf groupes : JavaScript, CSS, graphisme, médias, stockage, réseau, API matérielles, interface et sécurité. Chaque fonctionnalité est marquée comme prise en charge, partiellement prise en charge ou absente. Un test confirme qu'une fonctionnalité est présente, via un objet, une méthode, `CSS.supports()` ou `canPlayType()` ; il ne prouve pas qu'elle fonctionne sans bug.

### Comment c'est obtenu

Chaque ligne correspond à un test de détection de fonctionnalité lancé au chargement de la page, la technique que MDN recommande plutôt que la lecture du User-Agent. JavaScript et les API web sont testés en cherchant l'objet ou la méthode ; CSS en demandant à `CSS.supports()` si une déclaration ou un sélecteur est compris ; le graphisme en créant un canvas neuf pour chaque type de contexte ; les médias avec `canPlayType()`, dont la réponse « probably » compte comme « Oui » et « maybe » comme « Partiel ». La liste peut être copiée en texte brut.

### Exemple

`CSS.supports("container-type: inline-size")` renvoie `true` dans un navigateur qui implémente les requêtes de conteneur : cette ligne affiche donc « Oui ». Pour la vidéo AV1, la page demande `canPlayType('video/mp4; codecs="av01.0.05M.08"')` ; un navigateur qui répond « maybe » apparaît comme « Partiel », car il peut encore échouer à décoder ce profil.

### Limites

- Une fonctionnalité peut exister tout en étant désactivée par une règle, une autorisation ou le matériel.
- Certaines API n'apparaissent que sur des pages sécurisées (HTTPS) ou après une action de l'utilisateur.
- Les résultats décrivent ce navigateur, sur cet appareil, aujourd'hui ; un autre appareil ou une autre version peut donner autre chose.

### Sources

- [MDN: Implementing feature detection](https://developer.mozilla.org/en-US/docs/Learn_web_development/Extensions/Testing/Feature_detection) : pourquoi tester les fonctionnalités plutôt que les navigateurs.
- [CSS Conditional Rules Module Level 3](https://www.w3.org/TR/css-conditional-3/) : la méthode CSS.supports().
- [HTML Standard: canPlayType()](https://html.spec.whatwg.org/multipage/media.html#dom-navigator-canplaytype) : le sens de « probably » et « maybe ».
- [web.dev: Baseline](https://web.dev/baseline) : les fonctionnalités prises en charge par tous les principaux navigateurs.

## Ce que fait cet outil

À l'ouverture de la page, un script lance une soixantaine de petits tests sur votre navigateur actuel et indique pour chaque fonctionnalité si elle est prise en charge ou non. Les résultats sont regroupés en langage JavaScript, CSS, graphisme, médias et codecs, stockage, réseau, API matérielles, sécurité et interface, et le résumé en haut donne le nombre de fonctionnalités prises en charge.

Chaque test est une question à laquelle le navigateur peut répondre sans rien faire de visible. En JavaScript, il s'agit le plus souvent de vérifier qu'un élément existe, comme `structuredClone` ou `Promise.withResolvers`, ou qu'une syntaxe plus récente est acceptée, comme une expression régulière avec le drapeau `v`. Les lignes CSS passent par `CSS.supports()`, qui indique si le moteur de style comprend une propriété, une valeur ou un sélecteur comme `:has()`. Les lignes de codecs reprennent les réponses du navigateur lui-même à `canPlayType()` et aux tests Media Source.

Aucun test n'ouvre de demande d'autorisation, ne lance de sélecteur d'appareil ni n'envoie quoi que ce soit sur le réseau. Pour les API matérielles comme Web Bluetooth, WebUSB ou Web NFC, « prise en charge » signifie que le navigateur expose l'interface, pas qu'un appareil est branché ou autorisé.

## Mode d'emploi

1. Ouvrez la page dans le navigateur, le profil et l'appareil exacts qui vous intéressent. Les tests démarrent tout seuls.
2. Lisez le total du résumé, puis parcourez chaque groupe à la recherche des lignes marquées « Non ».
3. Dans le groupe Médias, repérez les codecs affichés comme « Partiel » : le navigateur a répondu maybe au lieu de probably.
4. Appuyez sur le bouton « Copier en texte » pour placer toute la liste dans le presse-papiers.
5. Collez-la dans le rapport de bug, le ticket ou la conversation, en ajoutant la version du navigateur et le système d'exploitation s'ils n'y sont pas déjà.

Faites le test dans la fenêtre même où le problème se produit. Les extensions, les règles d'entreprise et les options expérimentales (flags) peuvent activer ou désactiver certaines fonctionnalités.

Deux lignes décrivent la page autant que le navigateur : le contexte sécurisé dépend de la façon dont la page a été chargée, et l'isolation cross-origin des en-têtes envoyés par le serveur. Un autre site peut donc obtenir des réponses différentes pour ces deux-là.

## Cas d'usage

- **Tickets de support.** Un client signale que l'enregistrement d'un gros fichier ne fait rien. Demandez-lui d'ouvrir cette page et de coller la liste copiée ; une ligne « Système de fichiers privé de l'origine » ou « Fetch avec flux » absente peut régler la question en une seule réponse.
- **Vidéo qui ne se lit pas.** Un extrait se lit sur un ordinateur portable et affiche une image noire sur un autre. Comparez les lignes HEVC et AV1 sur les deux ; un « Non » ou un « Partiel » indique qu'il vaut mieux proposer aussi une version H.264 ou VP9.
- **Choisir ce qu'on peut mettre en production.** Avant de compter sur `:has()`, les requêtes de conteneur ou l'imbrication CSS, ouvrez la page sur les navigateurs les plus anciens qu'utilisent encore vos visiteurs, bornes et téléviseurs connectés compris.
- **Navigateurs intégrés aux applis.** Les liens touchés dans les applis de messagerie et les réseaux sociaux s'ouvrent souvent dans une vue web intégrée. Ouvrir cette page de cette façon montre ce que cette vue prend en charge, ce qui peut différer de Safari ou de Chrome sur le même téléphone.
- **Projets matériels.** Avant d'annoncer à vos utilisateurs qu'ils peuvent flasher un microcontrôleur ou configurer un clavier depuis une page web, faites-leur vérifier les lignes Web Serial, WebUSB et WebHID ; certains grands navigateurs n'ont pas du tout ces interfaces.

## Détection de fonctionnalités ou lecture du user agent

L'ancienne habitude consistait à lire la chaîne du user agent et à en déduire les capacités d'après le nom du navigateur. Cela échoue de façon prévisible. Les navigateurs basés sur Chromium partagent l'essentiel du texte de leur user agent. Chrome sur iPhone porte un jeton `CriOS` mais affiche normalement les pages avec WebKit : pour la plupart des lignes ici, il se comporte donc comme Safari. Chrome a aussi figé une partie des détails de version et de plateforme de sa chaîne, et n'importe qui peut la modifier en quelques clics.

La détection de fonctionnalités interroge plutôt le navigateur en cours d'exécution, ce qui simplifie aussi l'amélioration progressive : on construit une base qui fonctionne partout, puis on ajoute la meilleure option seulement là où le test réussit.

```
if ('share' in navigator) {
  shareButton.hidden = false;    // feuille de partage native
} else {
  copyLinkButton.hidden = false; // solution de repli simple
}
```

```
@supports (container-type: inline-size) {
  .card-list { container-type: inline-size; }
}
```

Les codecs fonctionnent de la même façon. Un lecteur peut appeler `video.canPlayType('video/mp4; codecs="av01.0.05M.08"')` et se rabattre sur une source H.264 quand la réponse est une chaîne vide, la façon dont le navigateur dit non. Les deux seules autres réponses possibles sont maybe et probably.

## Pourquoi le même navigateur peut répondre différemment

### Matériel et système d'exploitation

Beaucoup de lignes dépendent d'autre chose que de la compilation du navigateur. La lecture HEVC exige souvent un décodeur matériel ou la prise en charge du codec par le système d'exploitation : la même version du navigateur peut donc donner deux réponses différentes sur deux ordinateurs portables. Safari n'annonce AV1 que sur les appareils Apple équipés d'un décodeur AV1 matériel. WebGPU est arrivé sur certains systèmes d'exploitation avant d'autres, et un navigateur peut désactiver WebGL quand le pilote graphique figure sur sa liste de blocage. Certaines compilations open source de navigateurs omettent les codecs sous licence comme H.264 et AAC.

### Contextes sécurisés

Beaucoup d'API n'existent que dans un contexte sécurisé : les pages servies en https, ainsi que les adresses locales comme `http://localhost` et `http://127.0.0.1`. Les Service Workers, l'API asynchrone du presse-papiers, Web Authentication, Web Share, Screen Wake Lock, WebGPU et les API matérielles en font partie. Chargez le même site en http simple sur une adresse du réseau local, et ces objets sont absents plutôt que bloqués : une fonctionnalité qui marche sur localhost peut ainsi disparaître sur un serveur de test. `window.isSecureContext` indique l'état. L'isolation cross-origin, qui débloque `SharedArrayBuffer`, exige en plus les en-têtes de réponse `Cross-Origin-Opener-Policy` et `Cross-Origin-Embedder-Policy`.

### La liste est aussi une empreinte

Comme les résultats varient selon le navigateur, la version, le système d'exploitation et le matériel, l'ensemble des réponses permet de cerner la configuration d'un visiteur. C'est pour cela que les scripts d'empreinte font le même genre de tests, à côté du rendu canvas et des polices installées. Cette page fait ses tests en local et n'envoie rien, et iseeu.cc ne conserve aucun journal des adresses IP ni des recherches, mais n'importe quel site peut exécuter un code équivalent sans vous montrer le résultat. Avant de coller la liste dans un outil de suivi de bugs public, traitez-la comme tout autre détail de votre système que vous partagez.

## Questions fréquentes

**Cette page demande-t-elle l'accès à la caméra, au Bluetooth ou aux notifications ?**

Non. Chaque test se contente de vérifier si une API existe ou si le navigateur déclare prendre en charge quelque chose. Aucune méthode susceptible d'ouvrir une demande d'autorisation ou un sélecteur d'appareil n'est appelée, et aucune donnée ne quitte votre navigateur. La ligne « API Notifications », par exemple, vérifie que l'API est présente ; elle ne vous demande pas l'autorisation d'afficher des notifications. Par ailleurs, iseeu.cc ne dépose aucun cookie et ne conserve aucun journal des adresses IP ni des recherches.

**Une fonctionnalité est indiquée comme prise en charge : pourquoi ne marche-t-elle pas sur mon site ?**

« Prise en charge » signifie ici que le navigateur expose l'API ou déclare comprendre la syntaxe. L'usage réel peut quand même échouer : votre site est peut-être chargé en http simple et perd les API réservées aux contextes sécurisés, une autorisation a pu être refusée, une règle peut bloquer un appareil, ou WebGPU peut ne trouver aucun adaptateur graphique utilisable. Les lignes de codecs reflètent ce que le navigateur affirme, et un profil ou une résolution inhabituels peuvent encore échouer au décodage.

**Que veut dire « Partiel » dans les lignes de codecs ?**

La méthode canPlayType ne répond jamais oui. Elle renvoie probably quand le navigateur est à peu près sûr de pouvoir lire le format, maybe quand il reconnaît le format sans pouvoir en être certain sans essayer, et une chaîne vide pour dire non. Cette page affiche maybe comme « Partiel ». Un résultat partiel doit vous inciter à faire un vrai test de lecture avec votre propre fichier avant de compter sur ce codec.

**Pourquoi un collègue obtient-il d'autres résultats avec la même version du navigateur ?**

Plusieurs lignes dépendent du système d'exploitation et du matériel plus que de la version du navigateur. HEVC et AV1 s'appuient souvent sur des décodeurs matériels, la disponibilité de WebGPU varie selon la plateforme et le pilote graphique, et certaines compilations du navigateur sont livrées sans les codecs sous licence. Les extensions, les règles d'entreprise, les options expérimentales et les fenêtres de navigation privée peuvent aussi changer certaines réponses. Le plus rapide pour trouver la différence est de comparer côte à côte les deux listes copiées.

**Pourquoi certaines fonctionnalités disparaissent-elles quand le site est ouvert en http ?**

Les navigateurs n'exposent beaucoup d'API récentes que dans des contextes sécurisés, c'est-à-dire sur des pages chargées en https ou depuis des adresses locales comme localhost. Sur une page en http simple, des objets comme navigator.serviceWorker et navigator.clipboard sont tout simplement indéfinis. C'est voulu : ces API touchent à des appareils, à des identifiants ou à du code qui tourne longtemps en arrière-plan, et une page non chiffrée pourrait être modifiée en chemin. Servez vos environnements de test en https pour retrouver le comportement de la production.

**Cette liste peut-elle servir à m'identifier ?**

À elle seule, une liste de fonctionnalités prises en charge décrit votre navigateur, votre système d'exploitation et votre matériel, pas vous. Combinée à d'autres signaux, comme la taille de l'écran, les polices installées et le rendu canvas, elle s'ajoute à une empreinte du navigateur qui peut aider à reconnaître un visiteur qui revient. Cette page fait les tests en local et n'envoie rien, mais d'autres sites peuvent faire les mêmes tests sans rien dire : l'exposition tient donc à la combinaison, pas à cette liste seule.

**Ne vaut-il pas mieux regarder le user agent ?**

Pour décider d'utiliser ou non une fonctionnalité, non. Les chaînes User-Agent se ressemblent d'un navigateur basé sur Chromium à l'autre, Chrome en a réduit le détail, elles se modifient facilement et elles induisent en erreur sur iPhone, où Chrome et Firefox affichent normalement les pages avec WebKit. Tester directement la fonctionnalité donne la réponse du navigateur réellement en cours d'exécution. La chaîne User-Agent reste utile dans un rapport de bug pour noter la version exacte du navigateur.

**Comment transmettre ces résultats au support technique ?**

Ouvrez la page dans le navigateur, le profil et l'appareil où le problème se produit, appuyez sur le bouton « Copier en texte », puis collez la liste dans le ticket, le rapport de bug ou la conversation. Ajoutez la version du navigateur et le système d'exploitation s'ils n'y figurent pas déjà. Avant de la publier dans un outil de suivi public, traitez-la comme n'importe quel autre détail de votre système que vous partagez.

La détection rapporte ce que le navigateur expose ou annonce. Une fonctionnalité peut encore se révéler désactivée par une règle, faute de matériel ou à cause d'une autorisation refusée quand un site essaie réellement de s'en servir.

## Outils associés

- [Empreinte du navigateur](https://iseeu.cc/fr/empreinte-navigateur/): Les signaux qui permettent de reconnaître votre navigateur sans cookies.
- [Mon user agent](https://iseeu.cc/fr/mon-user-agent/): Affichez et analysez le User-Agent et les Client Hints envoyés par votre navigateur.
- [Test de fuite WebRTC](https://iseeu.cc/fr/test-fuite-webrtc/): Vérifiez si WebRTC dévoile une adresse IP que votre VPN devrait masquer.
- [Quelle est mon IP ?](https://iseeu.cc/fr/): Votre adresse IP, localisation, réseau, en-têtes, TLS et tests de fuite sur une seule page.
- [Convertisseur Punycode](https://iseeu.cc/fr/convertisseur-punycode/): Convertit les noms de domaine accentués ou en d'autres écritures vers leur forme xn-- et inversement.

[Voir tous les outils](https://iseeu.cc/fr/outils/)

Dernière mise à jour : 2026-10-11

Page d'origine : https://iseeu.cc/fr/fonctionnalites-navigateur/
