Chrome 133 bèta

Gepubliceerd: 15 januari 2024

Tenzij anders aangegeven, zijn de volgende wijzigingen van toepassing op de nieuwste release van het Chrome-bètakanaal voor Android, ChromeOS, Linux, macOS en Windows. Lees meer over de hier genoemde functies via de aangeboden links of via de lijst op ChromeStatus.com. Chrome 133 is vanaf 15 januari 2024 een bètaversie. Je kunt het nieuwste downloaden op Google.com voor desktop of in de Google Play Store op Android.

CSS en gebruikersinterface

Deze release voegt zeven nieuwe CSS- en UI-functies toe.

CSS geavanceerde attr() -functie

Implementeert de uitbreiding van attr() gespecificeerd in CSS-niveau 5, waardoor typen naast <string> en gebruik in alle CSS-eigenschappen mogelijk zijn (naast de bestaande ondersteuning voor het pseudo-element content ).

Lees meer in CSS attr() krijgt een upgrade .

CSS :open pseudo-klasse

De :open pseudo-klasse komt overeen met <dialog> en <details> wanneer ze zich in hun open status bevinden, en komt overeen met <select> en <input> wanneer ze zich in modi bevinden die een kiezer hebben en de kiezer wordt weergegeven.

CSS-scrollstatuscontainerquery's

Gebruik containerquery's om afstammelingen van containers op te maken op basis van hun scrollstatus.

De querycontainer is een scrollcontainer of een element dat wordt beïnvloed door de scrollpositie van een scrollcontainer. De volgende toestanden kunnen worden opgevraagd:

  • stuck : een vastgeplakte container zit vast aan een van de randen van het schuifvak.
  • snapped : Een uitgelijnde container met scroll-snaps wordt momenteel horizontaal of verticaal vastgeklikt.
  • scrollable : Of een scrollcontainer in een opgevraagde richting kan worden gescrolld.

Een nieuw container-type: scroll-state kunnen containers worden opgevraagd.

#sticky {
  position: sticky;
  container-type: scroll-state;
}

@container scroll-state(stuck: top) {
  #sticky-child {
    font-size: 75%;
  }
}

Lees meer in CSS scroll-state() .

CSS text-box , text-box-trim en text-box-edge

Om een ​​optimale balans van tekstinhoud te bereiken, maken de eigenschappen text-box-trim en text-box-edge , samen met de eigenschap text-box shorthand, een fijnere controle van de verticale uitlijning van tekst mogelijk.

De eigenschap text-box-trim specificeert de zijden die moeten worden bijgesneden, boven of onder, en de eigenschap text-box-edge specificeert hoe de rand moet worden bijgesneden.

Met deze eigenschappen kunt u de verticale afstand nauwkeurig bepalen door gebruik te maken van de lettertypemetrieken. Lees meer in CSS text-box-trim .

De hint van het popover -kenmerk

De Popover API specificeert het gedrag voor twee waarden van het popover -attribuut: auto en manual . Deze functie beschrijft een derde waarde, popover=hint . Hints, die meestal worden geassocieerd met gedrag van het type 'tooltip', vertonen iets ander gedrag. Het verschil is voornamelijk dat een hint ondergeschikt is aan auto bij het openen van geneste stapels popovers. Het is dus mogelijk om een ​​niet-gerelateerde hint te openen terwijl een bestaande stapel auto popovers open blijft.

Het canonieke voorbeeld is dat een <select> -kiezer open is ( popover=auto ) en dat er door de hover geactiveerde tooltip ( popover=hint ) wordt weergegeven. Deze actie sluit de <select> -kiezer niet.

Verbeteringen in de popover-aanroep en ankerpositionering

Voegt een dwingende manier toe om aanroeprelaties tussen popovers in te stellen met popover.showPopover({source}) . Maakt aanroeprelaties mogelijk om impliciete ankerelementreferenties te creëren.

Popover die in de invoker is genest, mag deze niet opnieuw aanroepen

In het volgende geval wordt de popover correct geactiveerd door op de knop te klikken. Als u daarna op de popover zelf klikt, wordt de popover echter niet gesloten.

<button popovertarget=foo>Activate
  <div popover id=foo>Clicking me shouldn't close me</div>
</button>

Voorheen gebeurde dit omdat de popover-klik naar de <button> borrelt en de invoker activeert, waardoor de popover wordt gesloten. Dit is nu gewijzigd in het verwachte gedrag.

Web-API's

Animation.overallProgress

Biedt ontwikkelaars een handige en consistente weergave van hoe ver een animatie is gevorderd in zijn iteraties en ongeacht de aard van de tijdlijn. Zonder de eigenschap overallProgress moet u handmatig berekenen hoe ver een animatie is gevorderd, waarbij rekening wordt gehouden met het aantal iteraties van de animatie en of de currentTime van de animatie een percentage is van de totale tijd (zoals in het geval van scrollgestuurde animaties). of een absolute tijdshoeveelheid (zoals in het geval van tijdgestuurde animaties).

De methode pause() van het Atomics object

Voegt de methode pause() toe aan het Atomics naamruimteobject, om de CPU te laten weten dat de huidige code een spinlock uitvoert.

CSP-hashrapportage voor scripts

Complexe webapplicaties moeten om veiligheidsredenen vaak bijhouden welke subbronnen ze downloaden.

Met name de komende industriestandaarden en best practices (bijvoorbeeld PCI-DSS v4) vereisen dat webapplicaties een inventaris bijhouden van alle scripts die ze downloaden en uitvoeren.

Deze functie bouwt voort op CSP en de Reporting API om de URL's en hashes (voor CORS/same-origin) te rapporteren van alle scriptbronnen die het document laadt.

DOM staatsbehoudende zet

Voegt een DOM-primitief toe ( Node.prototype.moveBefore ) waarmee u elementen door een DOM-structuur kunt verplaatsen, zonder de status van het element opnieuw in te stellen.

Bij het verplaatsen in plaats van verwijderen en invoegen blijft de volgende status behouden:

  • <iframe> -elementen blijven geladen.
  • Het actieve element blijft focus.
  • Popovers, volledig scherm en modale dialoogvensters blijven open.
  • CSS-overgangen en animaties gaan door.

Stel attributionsrc attribuut bloot op <area>

Lijnt de blootstelling van het attributionsrc attribuut op <area> uit met het bestaande verwerkingsgedrag van het attribuut, zelfs als het niet zichtbaar was.

Bovendien is het zinvol om het attribuut op <area> te ondersteunen, aangezien dat element een eersteklas navigatieoppervlak is, en Chrome dit al ondersteunt op de andere oppervlakken van <a> en window.open

Stel grovere cross-origin renderTime bloot in elementtiming en LCP (ongeacht Timing-Allow-Origin )

Elementtiming en LCP-items hebben een renderTime attribuut, uitgelijnd met het eerste frame waarin een afbeelding of tekst is geschilderd.

Dit attribuut wordt momenteel bewaakt voor cross-origin-afbeeldingen door een Timing-Allow-Origin header op de afbeeldingsbron te vereisen. Deze beperking is echter gemakkelijk te omzeilen (bijvoorbeeld door een afbeelding met dezelfde oorsprong en een afbeelding met een andere oorsprong in hetzelfde frame weer te geven).

Omdat dit een bron van verwarring is geweest, zijn we van plan deze beperking op te heffen en in plaats daarvan alle weergavetijden met 4 ms te vergroeven als het document niet cross-origin-geïsoleerd is. Dit lijkt grof genoeg om te voorkomen dat er nuttige informatie over de decodeertijd over afbeeldingen met een andere oorsprong lekt.

De FileSystemObserver interface

De FileSystemObserver interface informeert websites over wijzigingen in het bestandssysteem. Sites observeren wijzigingen in bestanden en mappen, waarvoor de gebruiker eerder toestemming heeft verleend, op het lokale apparaat van de gebruiker of in het Bucket File System (ook bekend als het Origin Private File System), en worden op de hoogte gesteld van basisinformatie over wijzigingen, zoals het wijzigingstype.

Bevriezen op Energy Saver

Wanneer Energy Saver actief is, bevriest Chrome een 'browsecontextgroep' die langer dan vijf minuten verborgen en stil is geweest als een subgroep van frames van dezelfde oorsprong daarin een CPU-gebruiksdrempel overschrijdt, tenzij deze:

  • Biedt functionaliteit voor audio- of videoconferenties (gedetecteerd door identificatie van microfoon, camera of scherm-/venster-/tabbladopname of een RTCPeerConnection met een 'open' RTCDataChannel of een 'live' MediaStreamTrack).
  • Bestuurt een extern apparaat (gedetecteerd met gebruik van WebUSB, Web Bluetooth, WebHID of Web Serial).
  • Bevat een Web Lock of een IndexedDB-verbinding die een versie-update of een transactie op een andere verbinding blokkeert.

Bevriezen bestaat uit het onderbreken van de uitvoering. Het is formeel gedefinieerd in de Page Lifecycle API.

De CPU-gebruiksdrempel wordt gekalibreerd om ongeveer 10% van de achtergrondtabbladen vast te zetten wanneer Energiebesparing actief is.

Meerdere importkaarten

Importkaarten moeten momenteel vóór elke ES-module worden geladen en er kan slechts één importkaart per document zijn. Dat maakt ze kwetsbaar en mogelijk traag in gebruik in real-life scenario's: elke module die wordt geladen voordat deze wordt geladen, vernietigt de hele app, en in apps met veel modules worden ze een grote blokkerende hulpbron, omdat de hele kaart voor alle mogelijke modules moet worden geladen Eerst.

Met deze functie zijn meerdere importkaarten per document mogelijk, door ze op een consistente en deterministische manier samen te voegen.

Headers voor toegang tot opslag

Biedt een alternatieve manier voor geverifieerde insluitingen om zich aan te melden voor niet-gepartitioneerde cookies. Deze headers geven aan of niet-gepartitioneerde cookies zijn (of kunnen) worden opgenomen in een bepaald netwerkverzoek, en stellen servers in staat om 'opslagtoegang'-machtigingen te activeren die ze al hebben gekregen. Door een alternatieve manier te bieden om de machtiging 'opslagtoegang' te activeren, wordt gebruik door niet-iframe-bronnen mogelijk en kan de latentie voor geauthenticeerde insluitingen worden verminderd.

Ondersteuning voor het maken van ClipboardItem met Promise<DOMString>

De ClipboardItem , de invoer voor de async clipboard write() -methode, accepteert nu naast Blobs ook tekenreekswaarden in de constructor. ClipboardItemData kan een Blob, een tekenreeks of een belofte zijn die wordt omgezet in een Blob of een tekenreeks.

WebAssembly-geheugen64

Het memory64-voorstel voegt ondersteuning toe voor lineaire WebAssembly-geheugens met een grootte groter dan 2^32 bits. Het biedt geen nieuwe instructies, maar breidt in plaats daarvan de bestaande instructies uit om 64-bits indexen voor geheugens en tabellen mogelijk te maken.

Webverificatie-API: PublicKeyCredential getClientCapabilities() methode

Met de PublicKeyCredential getClientCapabilities() methode kunt u bepalen welke WebAuthn-functies worden ondersteund door de client van de gebruiker. De methode retourneert een lijst met ondersteunde mogelijkheden, waardoor ontwikkelaars authenticatie-ervaringen en workflows kunnen afstemmen op de specifieke functionaliteit van de klant.

WebGPU: 1-component vertexformaten (en unorm8x4-bgra)

Voegt extra vertex-formaten toe die niet aanwezig waren in de eerste release van WebGPU vanwege een gebrek aan ondersteuning of oude macOS-versies (die niet langer door welke browser dan ook worden ondersteund). Dankzij de 1-component hoekpuntformaten kunnen applicaties alleen de noodzakelijke gegevens opvragen, terwijl ze voorheen minstens twee keer meer moesten opvragen voor 8- en 16-bits gegevenstypen. Het unorm8x4-bgra-formaat maakt het iets handiger om BGRA-gecodeerde hoekpuntkleuren te laden met behoud van dezelfde arcering.

X25519-algoritme van de Web Cryptography API

Het "X25519"-algoritme biedt hulpmiddelen om sleutelovereenkomsten uit te voeren met behulp van de X25519-functie die is gespecificeerd in [RFC7748]. De algoritme-ID "X25519" kan in de SubtleCrypto-interface worden gebruikt om toegang te krijgen tot de geïmplementeerde bewerkingen: genererenKey, importKey, exportKey, derivateKey en derivateBits.

Nieuwe oorsprongsproeven

In Chrome 133 kunt u zich aanmelden voor de volgende nieuwe origin-proefversies .

Meld u af voor bevriezing van Energy Saver

Met deze opt-out-proefperiode kunnen sites zich afmelden voor het bevriezen van het Energy Saver-gedrag dat wordt geleverd in Chrome 133.

Beëindigingen en verwijderingen

Deze versie van Chrome introduceert de hieronder vermelde beëindigingen en verwijderingen. Ga naar ChromeStatus.com voor een lijst met geplande beëindigingen, huidige beëindigingen en eerdere verwijderingen.

In deze versie van Chrome wordt één functie beëindigd.

Beëindig de WebGPU maxInterStageShaderComponents limiet

De maxInterStageShaderComponents limit is verouderd vanwege een combinatie van factoren. De beoogde verwijderingsdatum in Chrome 135.

  • Redundantie met maxInterStageShaderVariables : deze limiet dient al een soortgelijk doel, namelijk het regelen van de hoeveelheid gegevens die tussen shader-fasen wordt doorgegeven.
  • Kleine verschillen: Hoewel er kleine verschillen zijn in de manier waarop de twee limieten worden berekend, zijn deze verschillen klein en kunnen ze effectief worden beheerd binnen de maxInterStageShaderVariables limiet.
  • Vereenvoudiging: het verwijderen van maxInterStageShaderComponents stroomlijnt de shader-interface en vermindert de complexiteit voor ontwikkelaars. In plaats van twee afzonderlijke limieten met subtiele verschillen te beheren, kunnen ze zich concentreren op de beter genoemde en uitgebreidere maxInterStageShaderVariables .

In deze versie van Chrome worden twee functies verwijderd.

Als voorheen een bron vooraf werd opgehaald met <link rel=prefetch> , negeerde Chrome de cachesemantiek (namelijk max-age en no-cache ) voor het eerste gebruik binnen vijf minuten, om opnieuw ophalen te voorkomen. Chrome verwijdert dit speciale geval nu en gebruikt de normale HTTP-cache-semantiek.

Dit betekent dat webontwikkelaars de juiste caching-headers (Cache-Control of Expires) moeten toevoegen om de voordelen van <link rel=prefetch> te zien.

Dit heeft ook invloed op de niet-standaard <link rel=prerender> .

Verwijder de activering van de Chrome-welkomstpagina met initiële voorkeuren en tabbladen voor eerste uitvoering

Het opnemen van chrome://welcome in de first_run_tabs eigenschap van het initial_preferences bestand heeft nu geen effect. Dit is verwijderd omdat die pagina overbodig is bij de First Run Experience die wordt geactiveerd op desktopplatforms.