Publié le 15 janvier 2024
Sauf indication contraire, les modifications suivantes s'appliquent à la dernière version du canal bêta de Chrome pour Android, ChromeOS, Linux, macOS et Windows. Pour en savoir plus sur les fonctionnalités listées ici, consultez les liens fournis ou la liste sur ChromeStatus.com. Chrome 133 est en version bêta depuis le 15 janvier 2024. Vous pouvez télécharger la dernière version sur Google.com pour ordinateur ou sur le Google Play Store sur Android.
CSS et UI
Cette version ajoute sept nouvelles fonctionnalités CSS et d'UI.
Fonction attr()
CSS avancée
Implémente l'augmentation de attr()
spécifiée dans le CSS de niveau 5, qui permet d'utiliser des types autres que <string>
et dans toutes les propriétés CSS (en plus de la prise en charge existante du pseudo-élément content
).
Pour en savoir plus, consultez Mise à niveau du CSS attr()
.
Pseudo-classe CSS :open
La pseudo-classe :open
correspond à <dialog>
et <details>
lorsqu'elles sont ouvertes, et à <select>
et <input>
lorsqu'elles sont dans des modes qui comportent un sélecteur et que le sélecteur s'affiche.
Requêtes de conteneur d'état de défilement CSS
Utilisez des requêtes de conteneur pour styliser les descendants de conteneurs en fonction de leur état de défilement.
Le conteneur de requête est un conteneur de défilement ou un élément affecté par la position de défilement d'un conteneur de défilement. Vous pouvez interroger les états suivants:
stuck
: un conteneur positionné de manière fixe est collé à l'un des bords de la zone de défilement.snapped
: un conteneur aligné sur le point d'ancrage de défilement est actuellement ancré horizontalement ou verticalement.scrollable
: indique si un conteneur de défilement peut être défilé dans la direction interrogée.
Un nouveau container-type: scroll-state
permet d'interroger les conteneurs.
#sticky {
position: sticky;
container-type: scroll-state;
}
@container scroll-state(stuck: top) {
#sticky-child {
font-size: 75%;
}
}
Pour en savoir plus, consultez scroll-state()
CSS.
CSS text-box
, text-box-trim
et text-box-edge
Pour obtenir un équilibre optimal du contenu textuel, les propriétés text-box-trim
et text-box-edge
, ainsi que la propriété abrégée text-box
, permettent de contrôler plus précisément l'alignement vertical du texte.
La propriété text-box-trim
spécifie les côtés à couper, au-dessus ou en dessous, et la propriété text-box-edge
spécifie comment le bord doit être coupé.
Ces propriétés vous permettent de contrôler précisément l'espacement vertical à l'aide des métriques de police. Pour en savoir plus, consultez CSS text-box-trim.
Valeur hint
de l'attribut popover
L'API Popover spécifie le comportement pour deux valeurs de l'attribut popover
: auto
et manual
. Cette fonctionnalité décrit une troisième valeur, popover=hint
. Les indices, qui sont le plus souvent associés aux comportements de type "info-bulle", ont des comportements légèrement différents. La principale différence est qu'un hint
est subordonné à auto
lors de l'ouverture de piles imbriquées de popovers. Il est donc possible d'ouvrir un popover hint
sans rapport alors qu'une pile existante de popovers auto
reste ouverte.
L'exemple canonique est qu'un sélecteur <select>
est ouvert (popover=auto
) et qu'une info-bulle déclenchée par le survol (popover=hint
) s'affiche. Cette action ne ferme pas le sélecteur <select>
.
Améliorations apportées à l'appelant du pop-up et au positionnement des ancres
Ajoute un moyen impératif de définir des relations d'appelant entre les popovers avec popover.showPopover({source})
. Permet aux relations d'appelant de créer des références d'éléments d'ancrage implicites.
Le pop-up imbriqué dans l'appelant ne doit pas l'invoquer à nouveau
Dans le cas suivant, le clic sur le bouton active correctement le pop-up. Toutefois, le clic sur le pop-up lui-même après cela ne devrait pas le fermer.
<button popovertarget=foo>Activate
<div popover id=foo>Clicking me shouldn't close me</div>
</button>
Auparavant, cela se produisait, car le clic du popover se propage vers <button>
et active l'appelant, ce qui ferme le popover. Ce comportement a été modifié pour correspondre au comportement attendu.
API Web
Animation.overallProgress
Fournit aux développeurs une représentation pratique et cohérente de l'avancement d'une animation au fil de ses itérations, quelle que soit la nature de sa chronologie. Sans la propriété overallProgress
, vous devez calculer manuellement l'avancement d'une animation, en tenant compte du nombre d'itérations de l'animation et si le currentTime
de l'animation est un pourcentage du temps total (comme dans le cas des animations basées sur le défilement) ou une quantité de temps absolue (comme dans le cas des animations basées sur le temps).
Méthode pause()
de l'objet Atomics
Ajoute la méthode pause()
à l'objet d'espace de noms Atomics
pour indiquer au processeur que le code actuel exécute un spinlock.
Rapports sur les hachages CSP pour les scripts
Pour des raisons de sécurité, les applications Web complexes doivent souvent garder une trace des sous-ressources qu'elles téléchargent.
En particulier, les normes et bonnes pratiques du secteur à venir (par exemple, la version 4 de la norme PCI-DSS) exigent que les applications Web conservent un inventaire de tous les scripts qu'elles téléchargent et exécutent.
Cette fonctionnalité s'appuie sur le CSP et l'API Reporting pour signaler les URL et les hachages (pour CORS/même origine) de toutes les ressources de script que le document charge.
Déplacement préservant l'état DOM
Ajoute une primitive DOM (Node.prototype.moveBefore
) qui vous permet de déplacer des éléments dans une arborescence DOM, sans réinitialiser l'état de l'élément.
Lorsque vous déplacez des éléments au lieu de les supprimer et de les insérer, l'état suivant est conservé:
- Les éléments
<iframe>
restent chargés. - L'élément actif reste sélectionné.
- Les pop-ups, les boîtes de dialogue en plein écran et les boîtes de dialogue modales restent ouverts.
- Les transitions et les animations CSS continuent.
Exposer l'attribut attributionsrc
sur <area>
Aligne l'exposition de l'attribut attributionsrc
sur <area>
avec le comportement de traitement existant de l'attribut, même s'il n'était pas exposé.
De plus, il est logique de prendre en charge l'attribut sur <area>
, car cet élément est une surface de navigation de premier ordre, et Chrome le prend déjà en charge sur les autres surfaces de <a>
et window.open
.
Exposer des renderTime
cross-origin affinés dans le timing des éléments et le LCP (quel que soit le Timing-Allow-Origin
)
La synchronisation des éléments et les entrées LCP comportent un attribut renderTime
, aligné sur le premier frame dans lequel une image ou un texte a été peint.
Cet attribut est actuellement protégé pour les images inter-origines en exigeant un en-tête Timing-Allow-Origin
sur la ressource image. Toutefois, cette restriction est facile à contourner (par exemple, en affichant une image de même origine et une image de cross-origin dans le même frame).
Comme cela a été source de confusion, nous prévoyons de supprimer cette restriction et d'augmenter tous les temps de rendu de 4 ms lorsque le document n'est pas isolé entre les origines. Cela semble suffisamment grossier pour éviter toute fuite d'informations utiles sur le moment du décodage concernant les images inter-origines.
Interface FileSystemObserver
L'interface FileSystemObserver
informe les sites Web des modifications apportées au système de fichiers. Les sites observent les modifications apportées aux fichiers et aux répertoires, pour lesquels l'utilisateur a déjà accordé une autorisation, sur son appareil local ou dans le système de fichiers Bucket (également appelé système de fichiers privé d'origine). Ils sont informés des informations de modification de base, telles que le type de modification.
Figement en mode Économiseur d'énergie
Lorsque l'économiseur d'énergie est activé, Chrome fige un "groupe de contexte de navigation" qui a été masqué et silencieux pendant plus de cinq minutes si un sous-groupe de cadres de même origine dépasse un seuil d'utilisation du processeur, sauf dans les cas suivants:
- Fournit une fonctionnalité de visioconférence (détectée en identifiant la capture du micro, de la caméra ou de l'écran/de la fenêtre/de l'onglet, ou un RTCPeerConnection avec un RTCDataChannel "ouvert" ou un MediaStreamTrack "en direct").
- Contrôle un appareil externe (détecté à l'aide de WebUSB, Web Bluetooth, WebHID ou Web Serial).
- Maintient un verrouillage Web ou une connexion IndexedDB qui bloque une mise à jour de version ou une transaction sur une autre connexion.
Le blocage consiste à suspendre l'exécution. Il est défini officiellement dans l'API Page Lifecycle.
Le seuil d'utilisation du processeur sera calibré pour figer environ 10% des onglets en arrière-plan lorsque l'économiseur d'énergie est activé.
Plusieurs cartes d'importation
Les cartes d'importation doivent actuellement se charger avant tout module ES. Il ne peut y avoir qu'une seule carte d'importation par document. Cela les rend fragiles et potentiellement lents à utiliser dans des scénarios réels: tout module qui se charge avant eux casse l'application entière, et dans les applications comportant de nombreux modules, ils deviennent une grande ressource bloquante, car la carte complète de tous les modules possibles doit d'abord se charger.
Cette fonctionnalité permet d'utiliser plusieurs cartes d'importation par document, en les fusionnant de manière cohérente et déterministe.
En-têtes d'accès au stockage
Fournit un autre moyen pour les embeds authentifiés d'activer les cookies non partitionnés. Ces en-têtes indiquent si des cookies non partitionnés sont (ou peuvent être) inclus dans une requête réseau donnée et permettent aux serveurs d'activer les autorisations d'accès au stockage qui leur ont déjà été accordées. Fournir un autre moyen d'activer l'autorisation "storage-access" permet aux ressources autres que les iFrames de l'utiliser et peut réduire la latence pour les éléments intégrés authentifiés.
Prise en charge de la création de ClipboardItem
avec Promise<DOMString>
ClipboardItem
, qui est l'entrée de la méthode write()
de presse-papiers asynchrone, accepte désormais des valeurs de chaîne en plus des blobs dans son constructeur.
ClipboardItemData
peut être un Blob, une chaîne ou une promesse qui se résout en Blob ou en chaîne.
WebAssembly Memory64
La proposition memory64 permet de prendre en charge les mémoires WebAssembly linéaires de plus de 2^32 bits. Il ne fournit aucune nouvelle instruction, mais étend les instructions existantes pour permettre des index 64 bits pour les mémoires et les tables.
API Web Authentication: méthode getClientCapabilities()
PublicKeyCredential
La méthode getClientCapabilities()
PublicKeyCredential vous permet de déterminer quelles fonctionnalités WebAuthn sont compatibles avec le client de l'utilisateur. La méthode renvoie une liste des fonctionnalités compatibles, ce qui permet aux développeurs d'adapter les expériences et les workflows d'authentification en fonction des fonctionnalités spécifiques du client.
WebGPU: formats de sommet à un composant (et unorm8x4-bgra)
Ajoute des formats de sommets supplémentaires qui n'étaient pas présents dans la version initiale de WebGPU en raison d'une absence de prise en charge ou d'anciennes versions de macOS (qui ne sont plus compatibles avec aucun navigateur). Les formats de sommets à un composant permettent aux applications de ne demander que les données nécessaires, alors qu'auparavant, elles devaient en demander au moins deux fois plus pour les types de données 8 et 16 bits. Le format unorm8x4-bgra permet de charger plus facilement les couleurs de sommets encodées en BGRA tout en conservant le même nuanceur.
Algorithme X25519 de l'API Web Cryptography
L'algorithme "X25519" fournit des outils permettant d'effectuer un accord de clé à l'aide de la fonction X25519 spécifiée dans [RFC7748]. L'identifiant de l'algorithme "X25519" peut être utilisé dans l'interface SubtleCrypto pour accéder aux opérations implémentées: generateKey, importKey, exportKey, deriveKey et deriveBits.
Nouveaux essais Origin
Dans Chrome 133, vous pouvez activer les nouveaux tests d'origine suivants.
Désactiver le figement en mode Économiseur d'énergie
Cet essai de désactivation permet aux sites de désactiver le comportement de blocage en mode Économiseur d'énergie fourni dans Chrome 133.
Abandons et suppressions
Cette version de Chrome introduit les abandons et suppressions listés ci-dessous. Consultez ChromeStatus.com pour obtenir la liste des fonctionnalités abandonnées, des fonctionnalités en cours d'abandon et des fonctionnalités supprimées précédemment.
Cette version de Chrome abandonne une fonctionnalité.
Abandon de la limite WebGPU maxInterStageShaderComponents
maxInterStageShaderComponents limit
est obsolète en raison d'une combinaison de facteurs. Date prévue de suppression dans Chrome 135.
- Redondance avec
maxInterStageShaderVariables
: cette limite remplit déjà un objectif similaire, à savoir contrôler la quantité de données transmises entre les étapes de nuanceur. - Différences mineures: bien que les deux limites soient calculées de manière légèrement différente, ces différences sont mineures et peuvent être gérées efficacement dans la limite
maxInterStageShaderVariables
. - Simplification: la suppression de
maxInterStageShaderComponents
simplifie l'interface du nuanceur et réduit la complexité pour les développeurs. Au lieu de gérer deux limites distinctes avec des différences subtiles, ils peuvent se concentrer sur l'maxInterStageShaderVariables
plus approprié et plus complet.
Cette version de Chrome supprime deux fonctionnalités.
Supprimer la règle de cinq minutes <link rel=prefetch>
Auparavant, lorsqu'une ressource était préchargée à l'aide de <link rel=prefetch>
, Chrome ignorait sa sémantique de cache (à savoir max-age
et no-cache
) pour la première utilisation dans les cinq minutes, afin d'éviter de la récupérer à nouveau. Chrome supprime désormais ce cas particulier et utilise la sémantique de cache HTTP normale.
Cela signifie que les développeurs Web doivent inclure les en-têtes de mise en cache appropriés (Cache-Control ou Expires) pour bénéficier des avantages de <link rel=prefetch>
.
Cela affecte également les <link rel=prerender>
non standards.
Suppression du déclenchement de la page d'accueil de Chrome avec les onglets de première utilisation des préférences initiales
L'inclusion de chrome://welcome
dans la propriété first_run_tabs
du fichier initial_preferences
n'aura désormais aucun effet. Cette page est supprimée, car elle est redondante avec l'expérience de première utilisation qui se déclenche sur les plates-formes de bureau.