September 20th, 2016
u flag (which stands for Unicode) is now applied to any regular expressions compiled through the
pattern attribute for
This enables more Unicode-friendly features, and generally more sensible behavior.
<input pattern="[🍪🎂🍩]"> <!-- The input only validates when it is either 🍪, 🎂, or 🍩. (Previously, those strings would fail validation.) -->
The Presentation API defines the nw
allow-presentation sandboxing flag for
<iframe sandbox="…"> which gives web developers control over whether an
iframe can start a presentation session. By default, the Presentation API is disabled in sandboxed
Shadow DOM v1
All browser vendors finally agreed on the Shadow DOM spec, called v1. The new Shadow DOM APIs include:
For more information, check out Hayato Ito’s overview of the differences between Shadow DOM v0 and v1.
MediaStreamTrack Constraints API
MediaStreamTrack methods are now supported:
These APIs allow getting, setting, and querying constraints on a
MediaTrackConstraints instances now have
navigator.mediaDevices.getUserMedia() API, which returns a promise, is now supported. Also, the unprefixed version of
navigator.getUserMedia() (which uses callbacks) is now available. For more info, see Sam Dutton’s write-up.
filter property is now supported in its unprefixed form. For now,
-webkit-filter is still supported as an alias for
filter. A demo featuring SpongeBob SquarePants is available.
Chromium already supported
-webkit-user-select, the prefixed version of
user-select, but it didn’t recognize every value the spec defines. As of this update, the
-webkit-user-select: all is supported. This property/value pair makes it so that if a selection would contain only part of an element, then the selection must contain the entire element including all its descendants.
For example, if you apply this on all
<p> elements, and you then try to select a single word in a paragraph, the entire paragraph is selected automatically.
The CSS Tricks Almanac entry for
user-select features a nice demo.
Force flattening when ancestor has opacity
3D-positioned descendants are now flattened by an ancestor that has opacity. Previously that didn’t happen if that ancestor also specified
transform-style: preserve-3d. A visual demo explains this better than words ever could.
Generally, all content is re-rastered when its transform scale changes, unless
will-change: transform is applied to it. In other words,
Deprecated and removed features
click is the only exception for backwards compatibility with legacy content. This change matches the spec) and other browsers.
The HTML spec was changed so that
<label> elements aren’t form-associated elements anymore. As a result, support for the
form attribute on
<label> elements was removed, and
labelElement.form is now an alias for
labelElement.control.form (instead of mapping to the
form attribute value).
HTTP/0.9, the predecessor to HTTP/1.x, is now deprecated, and will be removed in a future release. Its replacement, HTTP/1.0, was standardized 20 years ago.
Support for DHE-based TLS ciphers has been removed, after being deprecated in Chromium 51 & Opera 38. Servers should upgrade to ECDHE ciphers instead.
A long time ago, the File API spec was changed to remove the
FileError interface. It has been deprecated since 2013. As we’re preparing to remove this interface entirely in a future release, any usage of
FileError now triggers a warning in the DevTools console.
The TextEncoder API no longer accepts an argument that specifies the encoding. Instead, it always uses UTF-8. If an argument is passed, it is ignored. This means that
new TextEncoder('utf-16') and
new TextEncoder('utf-16be') no longer work.
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.