What’s new in Chromium 56 and Opera 43
Opera 43 (based on Chromium 56) for Mac, Windows, Linux is out! To find out what’s new for users, see our Desktop blog. Here’s what it means for web developers.
Prerender from address bar
Opera will now prerender pages that are typed into the address bar, before the user hits enter, which can make the page finish loading much sooner.
If you can predict what the user’s likely next navigation will be, you can start a prerender from the current page by using <link rel=prerender>
. This has actually been supported since Opera 15, but this seemed like a good opportunity for a reminder. 🙂 For more information about how to use prerender
and other resource hints, see Resource Hints – What is Preload, Prefetch, and Preconnect? by Brian Jackson.
Classic link selection
Opera now allows users to select link text instead of always dragging the link (like in Opera 12). The user can select by dragging left or right, and start a drag-and-drop by dragging up or down.
Not being able to select text to copy and paste is often frustrating for users. But in some cases it can be justified, like if a link is being used to act as a button, or if text is used only for decoration. To disable text selection in general, CSS user-select: none
can be used.
Scroll anchoring intervention
When some content changes above the viewport (e.g., an image is loaded), what used to happen is that the rest of the content is pushed down. With the scroll anchoring intervention the scroll position is updated to keep the content currently in the viewport stable. This behavior can be disabled for a specific subtree or for the whole page by using CSS overflow-anchor: none
. See this video for a comparison with and without this intervention.
CSS
- Opera now supports
position: sticky
, a new way to position elements. Aposition: sticky
element is relatively-positioned, but becomesposition: fixed
after the user reaches a certain scroll position. This results in smoother scroll without jumps compared to trying to achieve the same thing withscroll
events and JavaScript. For more info see this article by Paul Kinlan. - The new generic font family
system-ui
is now supported, which matches the platform’s default UI font. touch-action: pinch-zoom
is now supported.- Non-whitespace Unicode control characters will now be rendered according to the specification, rather than being ignored.
HTTP Referrer-Policy
header
The new Referrer-Policy
HTTP header allows sites to forward site traffic by URL without leaking the user’s session identifier or other private information.
Events: keyboardEvent.isComposing
The KeyboardEvent
interface now supports the isComposing
attribute which returns true
if this event is fired between compositionstart
and compositionend
events.
Canvas
ImageBitmapRenderingContext
can be used to reduce memory consumption and compositing overhead by rendering pixel data in the form of an ImageBitmap
.
Audio/video
ConstantSourceNode
is a new audio source node that produces a constant output mixed with anAudioParam
.- Two Web Audio
ChannelSplitterNode
interface attributes are now read-only:channelCount
, which is defined bynumberOfOutputs
increateChannelSplitter()
, andchannelCountMode
, which is set to explicit. PannerNode.rolloffFactor
now clamps to the nominal range of a PannerNode’s distance model to describe the volume reduction rate as the source moves away from the listener.- Support for FLAC is enabled within the FLAC and Ogg containers for the
audio
HTML element anddecodeAudioData()
. - OPUS can now be used with
decodeAudioData()
, expanding the variety of audio codecs supported by the Web Audio API.
Shadow DOM
- Shadow DOM’s
slotchange
events bubble, but no longer re-fires, at aslot
’sassignedSlot
.
Deprecated and removed features
- Non-script MIME types for external scripts (e.g.,
<script src="foo" type="something/something">
) was deprecated (generated a message in the console) in Opera 42 and now in Opera 43 are no longer pre-fetched. This typically results in less wasted fetches.<script data-src="foo" type="something/something">
is recommended instead. - The Web Audio API no longer includes the deprecated Doppler API, including
speedOfSound
,dopplerFactor
, andsetVelocity
. RTCPeerConnection
now acceptsiceTransportPolicy
as anRTCConfiguration
parameter as well asiceTransports
.RTCPeerConnection
is now available without a webkit prefix, thoughwebkitRTCPeerConnection
still remains.- The
reflected-xss
directive has been removed from Content Security Policy 2 since it was solely a wrapper for theX-XSS-Protection
header and provided no additional functionality. - Support for the
MediaStreamTrack.getSources()
method has been removed in favor ofMediaDevices.enumerateDevices()
. - The CSP
referrer
directive is no longer supported in favor of the newReferrer-Policy
header mentioned above. - Legacy CBC-mode ECDSA cipher suites ECDHE_ECDSA_WITH_AES_128_CBC_SHA and ECDHE_ECDSA_WITH_AES_256_CBC_SHA have been removed in favor of modern ciphers such as ECDHE_ECDSA_WITH_AES_128_GCM_SHA256.
- ECDSA with both SHA-1 and SHA-512 have been removed to reduce dependencies on SHA-1 and align with TLS 1.3’s new ECDSA handling.
MIDIMessageEvent.receivedTime
has been deprecated in favor ofEvent.timeStamp
, sinceEvent.timeStamp
now supports high-resolution monotonic time instead of epoch time.
What’s next?
If you’re interested in experimenting with features that are in the pipeline for future versions of Opera, we recommend following our Opera Developer stream.