September 20th, 2016Opera 40 (based on Chromium 53) 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.
uflag (which stands for Unicode) is now applied to any regular expressions compiled through the
<textarea>elements. This enables more Unicode-friendly features, and generally more sensible behavior.
A demo is available.
<input pattern="[🍪🎂🍩]"> <!-- The input only validates when it is either 🍪, 🎂, or 🍩. (Previously, those strings would fail validation.) -->
The Presentation API defines the nw
allow-presentationsandboxing flag for
<iframe sandbox="…">which gives web developers control over whether an
iframecan start a presentation session. By default, the Presentation API is disabled in sandboxed
Shadow DOM v1All browser vendors finally agreed on the Shadow DOM spec, called v1. The new Shadow DOM APIs include:
MediaStreamTrack Constraints API
MediaStreamTrackmethods are now supported:
MediaTrackConstraintsinstances 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.
filterproperty is now supported in its unprefixed form. For now,
-webkit-filteris 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: allis 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-selectfeatures a nice demo.
Force flattening when ancestor has opacity3D-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: transformis applied to it. In other words,
clickis 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
<label>elements was removed, and
labelElement.formis now an alias for
labelElement.control.form(instead of mapping to the
formattribute 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
FileErrorinterface. It has been deprecated since 2013. As we’re preparing to remove this interface entirely in a future release, any usage of
FileErrornow 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-16be')no longer work.
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.