Google heeft versie 76 van zijn webbrowser Chrome uitgebracht. Google Chrome is beschikbaar voor Windows, Linux en macOS. Er zijn ook versies voor Android en iOS, maar die volgen een iets ander releaseschema. De belangrijkste veranderingen die in versie 76 zijn aangebracht, naast de gebruikelijke bug- en security fixes, zijn hieronder voor je op een rijtje gezet.
Many operating systems now support inverted color schemes with a system setting referred to as ‘dark theme' or ‘dark mode', depending on the system. ThePayments API
prefers-color-schememedia query allows a website or web app to adopt the preferred display mode of the user. What is left out of this is the explanation? For that, read the article titled Hello Darkness, My Old Friend.
Over the last few versions of Chrome we've rolled out a number of improvements to the payments APIs. These APIs provide a way to interact with proprietary payment systems without needing to build your own user interactions. Changes in Chrome 75 included replacingInstall Progressive Web Apps on the desktop with ease
canMakePayment()and removal of
languageCodefrom the billing address. With the
detailsPromiseoption Chrome 75 gives
PaymentRequest.show()a means of performing a quick server call before showing payment details to the buyer. Chrome 76 brings three changes to the payment realm. Now implemented are features that allow a merchant website or web app to respond when a user changes payment instruments. Additionally, the
PaymentRequestEventhas a new method called
PaymentRequestobject now supports an event handler called
paymentmethodchange. You can use both to notify a merchant when the user changes payment instruments. The former returns a promise that resolves with a new
PaymentRequestinstance. Additionally, Chrome now makes it easier to use the payments APIs for self-signed certificates on the local development environment. To do this, launch Chrome from a command line with the
—ignore-certificate-errorsflag. For detailed information about these features, read Web Payments Updates.
On desktop, there is typically no indication to a user that a Progressive Web App is installable, and if it is, the install flow is hidden within the three dot menu. In Chrome 76, we're making it easier for users to install Progressive Web Apps on the desktop by adding an install button to the omnibox. If a site meets the Progressive Web App installability criteria, Chrome shows an install icon in the omnibox. There is no extra work required from developers. Clicking the button prompts the user to install the PWA.Control the Add to Home Screen mini-infobar
In Chrome 76, we're giving you control over the add to home screen mini-infobar. Chrome shows the mini-infobar the first time a user visits a site that meets the Progressive Web App installability criteria. Developers want to prevent the mini-infobar from appearing, and provide their own install promotion instead. To do this, listen for theUpdating WebAPKs more frequently
beforeinstallpromptevent, and call
preventDefault()on it. Then, update your UI to notify the user by adding an install button or other element. Depending on your app, there are several different patterns you can use to promote installation of your PWA. The add to home screen mini-infobar is still a temporary measure. We are experimenting with new UI patterns for giving Progressive Web App users the ability to install, and do this in a way that reduces clutter in the browsing experience.
When a PWA is installed on Android, Chrome automatically requests and installs a WebAPK. Chrome periodically checks to see if the manifest has changed, and if a new WebAPK is required. Starting in Chrome 76, Chrome will check the manifest more frequently: checking every day, instead of every three days. If any of the key properties have changed, Chrome will request and install a new WebAPK.Other features in this release
AddsAsync clipboard: read and write images
Animation.updatePlaybackRate(), which lets you seamlessly transition the playback rate of an animation such that there is no visible jump in the animation. Current time is preserved at the instance the new playback rate takes effect.
Implements programmatic copying and pasting of images for the Async Clipboard API. This change also updatesEscape key is not a user activation
navigator.clipboard.write()to comply with the specification. Programmatic copying and pasting of images is Chromium's top starred bug.
The escape key is no longer treated as a user activation. Browsers prevent calls to abusable APIs (like popup, fullscreen, vibrate, etc.) unless the user activates the page through direct interactions. Not all interactions trigger user activation. For example, clicking on a link or typing in a textbox does, but swiping fingers on a screen or hovering with the mouse cursor does not. Since users never intend to interact with the page through the escape key, it should not trigger user activation.Fetch Metadata
Introduces a new HTTP request header that sends additional metadata about a request's provenance (is it cross-site, is it triggered fromform.requestSubmit()
<img>, etc.) to the server to allow it to make security decisions which might mitigate some kinds of attacks based on timing the server's response (XSS leaks and others). For example, it is unlikely that a bank's "Transfer all money" endpoint would be referenced from an
<img>tag, and likewise unlikely that evil.com is going to be making any legitimate requests whatsoever. Ideally, the server could reject these requests a priori rather than deliver them to the application backend.
Adds theImageCapture support for focusDistance constraint
form.requestSubmit()function, which requests form submission. It includes interactive constraint validation, dispatches a
submitevent, and takes a reference to the submitter button.
The Image Capture API provides a means to set the focusMode to manual which is not useful if you cannot set the focus distance. This change provides an interface for getting focus range values and setting focus distance value.Implement Animation.pending
Adds the pending attribute to the Web Animations API. A pending animation is one that is waiting on an asynchronous operation that affects the play state. Adding support for this attribute does not affect the rendering or timing of animations, but simply exposes the signal.IndexedDB transaction explicit commit API call
IDBTransactionobjects, which explicitly marks a transaction as not accepting further requests. Currently, IndexedDB only commits a transaction after all associated requests have had their completion event handlers executed, and no new requests have been queued by the event handlers. Developers can use the explicit
commit()function to shave a few event loop cycles off of the latency of their transactions. The primary benefit of explicit commit is that it increases the throughput of read and write requests made on an object store. This is a clear performance benefit in terms of the rate at which operations can be processed. Additionally, the increase in speed is advantageous because it adds stability to IndexedDB by reducing the probability that a disruptive event occurs within the lifetime of a transaction.
DateTimeFormat dateStyle and timeStyle AddsMedia capabilities in workers
timeStyleoptions to functions on
resolveOptions(). These options provide a compact way to request the appropriate, locale-specific date and time of given length styles. Locale sensitive BigInt.prototype.toLocaleString and allow Intl.NumberFormat format/formatToParts to take BigInt. Changes
BigInt.prototype.toLocaleString()to locale-sensitive number formatting and changes
Enables the Media Capabilities API in all types of workers to help website and web apps pick the best media to stream from a worker. The information can then be used to create thePromise.allSettled
MediaStreamfrom a worker.
Adds Promise.allSettled(), which returns a promise that is fulfilled with an array of promise state snapshots, but only after all the original promises have settled, in other words after it has either resolved or rejected.Simpler reading methods for Blob interface
Adds three new methods to the Blob interface to perform read operations:WebRTC
RTCSctpTransport Exposes information about the SCTP transport that is used to carry WebRTC data channels such aswhite-space: break-spaces
maxchannels. RTCRtpSender.setStreams Allows changing the association between the track associated with an
RTCRtpSenderand streams. Stream association causes tracks in the same stream to be synchronized. This is useful, for example, if during a call a user switches from a front-facing camera to a back-facing camera and the application uses
RTCRtpSender.replaceTrack(). On the receiving end the new track must be associated with the existing stream and synchronized with its auto track. RTCRtpTransceiver.setCodecPreferences() Adds the
setCodecPreferences()method, which overrides the default codec preferences used by the user agent. This allows applications to disable the negotiation of specific codecs. It also allows an application to cause a remote peer to prefer the codec that appears first in the list for sending.
white-space:break-spacesvalue allows authors to specify that any sequence of preserved white space that would otherwise overflow a line and hang (as per the CSS Text Module specification's Trimming and Positioning rules) must be broken.
Remove feature policy: lazyload
The lazyload feature policy was intended to allow developers to selectively control the lazyload attribute on theRemove outputs from MediaStreamAudioDestinationNode
<img>tags to provide more control over loading delay for embedded contents and images on a per origin basis. The policy is removed in favor of a newer feature policy for loading, namely
loading-frame-default-eagerwhich is more aligned with how the
loadingattribute will be used. The removal applies to both the Feature-Policy header and the
According to the specification, theRemove insecure usage of DeviceMotionEvent
MediaStreamAudioDestinationNodein the Web Audio API should have no outputs. Chrome's implementation has a single output which has been removed.
Chromium has been showing deprecation warnings since 2015 whenever the API is used in a non-secure browsing context. Chrome now restricts the API to secure browsing contexts. This change brings Chromium's implementation in line with the privacy and security recommendations in the specification, and is aligned with the effort to deprecate powerful features on insecure origins.Remove insecure usage of DeviceOrientationEventChromium has been showing deprecation warnings since 2015 whenever the API is used in a non-secure browsing context. Chrome now restricts the API to secure browsing contexts. This change brings Chromium’s implementation in line with the privacy and security recommendations in the specification, and is aligned with the effort to deprecate powerful features on insecure origins.