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 uitgebreideremaxInterStageShaderVariables
.
In deze versie van Chrome worden twee functies verwijderd.
Verwijder <link rel=prefetch>
vijfminutenregel
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.