Chromium Blog
News and developments from the open source browser project
Chrome 64 Beta: stronger pop-up blocker, Resize Observer, and import.meta
Thursday, December 14, 2017
Unless otherwise noted, changes described below apply to the newest Chrome
Beta
channel release for Android,
Chrome OS,
Linux, Mac, and Windows.
Stronger pop-up blocker
1 out of every 5 user feedback reports submitted on Chrome for desktop mention some type of
unwanted content. Examples include links to third-party websites disguised as play buttons or other
site controls, or transparent overlays on websites that capture all clicks and open new tabs or
windows. In this release, Chrome's pop-up blocker
now prevents
sites with these types of
abusive
experiences
from opening new tabs or windows. Site owners can use the
Abusive Experiences
Report
in Google Search Console to see if any of these abusive experiences have been found on
their site and improve their user experience.
Two types of abusive experiences where a deceptive site control appears to do one thing, but has a different behavior when clicked. One looks like a play button on a video but sends the user to an unwanted download when clicked (left), and the other looks like a close button but instead opens unwanted pop-up windows (right).
Resize Observer
Traditionally, responsive web applications have used CSS media queries or
window.onresize
to
build responsive components that adapt content to different viewport sizes. However, both of these
are global signals and require the overall viewport to change in order for the site to respond
accordingly. Chrome now supports the
Resize Observer
API to give web applications
finer
control
to
observe changes
to sizes of elements on a page.
const
ro =
new
ResizeObserver
((entries) => {
for
(const entry of entries) {
const
cr = entry.contentRect;
console.log(
'Element:'
, entry.target);
console.log(
`Element size: ${cr.width}px × ${cr.height}px`
);
console.log(
`Element padding: ${cr.top}px / ${cr.left}px`
);
}
});
// Observe one or multiple elements
ro.observe(someElement);
The code snippet above uses the Resize Observer API to observe changes to an element.
import.meta
Developers writing JavaScript modules often want access to host-specific metadata about the
current module. To make this easier, Chrome now
supports
the
import.meta
property within
modules that exposes the module URL via
import.meta.url
. Library authors might want to
access the URL of the module being bundled into the library to more easily resolve resources
relative to the module file as opposed to the current HTML document. In the future, Chrome plans to
add more properties to
import.meta
.
Other features in this release
Blink > Animation
The
offset-path
property can be
used
to animate an element by specifying the geometry of the path that an element moves along.
Blink>Fonts
Developers can now
use
the
text-decoration-skip-ink
CSS property to control how overlines and underlines are
drawn
when they cross over a glyph.
Blink>Input
Coordinates of
PointerEvent
with
pointerType=mouse
are now
fractional
, resulting in more precise mouse measurements.
Blink>JavaScript
To improve developer experience, Chrome now supports
named captures in regular expressions
,
allowing
developers to assign meaningful names to portions of a string that a regular expression matches.
Chrome now supports the
Unicode property escapes
\p{…}
and
\P{…}
for regular expressions that have the
u
flag set, allowing developers to create more powerful Unicode-aware regular expressions.
To assist with local-aware formatting of strings produced by internationalization formatters, developers can now use
Intl.NumberFormat.prototype.formatToParts()
to format a number to a list of tokens and their type. Thanks to Igalia for helping make this happen!
Blink>Media
Matching other browser implementations,
Chrome now sets the
default
preload
value
for
<video>
and
<audio>
elements to
metadata
in order to reduce bandwidth and resource usage by only loading resource metadata and not the media resource itself.
Chrome now supports
HDR video playback when Windows 10 is in HDR mode
, enabling developers to provide users with HDR
VP9 Profile 2 10-bit videos
.
To support
compatibility
with the HTML Spec, Chrome now throws a "
NotSupportedError
"
DOMException
when
a media element’s
playbackRate
is set to a value
not supported
by Chrome, like negative values.
Chrome now
supports
the
Media Capabilities
API in Origin Trials,
enabling
developers to know whether an audio or video playback will be smooth and power-efficient based on previous performance statistics.
To match the
Media Capture and Streams spec
,
getUserMedia()
returns a rejected Promise with
DOMException
or
OverconstrainedError
when there is an error.
Blink>Network
Developers can now use the
cache
option to specify the cache mode of a
Request
.
Developers can now use
Request.prototype.cache
to view the cache mode of a
Request
and determine whether a request is a reload request.
Blink>Permissions API
To better align with the Permissions API spec, the
Permissions API
can now be used to query the status of the
camera
and
microphone
permissions.
Blink>Scroll
In
Focus Management APIs
, developers can now focus an element without scrolling to it by using the
preventScroll
attribute.
Blink>SVG
To allow developers to
transform
and
change position of transformed SVG elements
, Chrome now supports
transform-box
for SVG elements. Thanks to Opera for making this happen!
Blink>WebAudio
AudioWorklet
, an API that
exposes
low-level audio processing capability to support custom AudioNodes, is now available in origin trials and the experimental flag.
Blink>WebRTC
To align with the
WebRTC 1.0 spec
,
RTCPeerConnection
now supports
addTrack()
for single stream use cases, as well as
removeTrack()
,
getSenders()
,
ontrack
, and a minimal version of the
RTCRtpSender
interface.
Blink>WindowDialog
To improve interoperability and end user experience,
window.alert()
no longer
brings a backgrounded tab to the foreground but instead shows the alert when the user switches to the background tab.
UI>Notifications
Similar to macOS, Chrome notifications sent through the
Notifications API
or
chrome.notifications
on Linux are now
shown
directly by the Linux native notification system.
Deprecations and interoperability improvements
Blink> CSS
To align with the spec,
getMatchedCSSRules
has been
removed
and developers can use the
Blink polyfill
instead.
Blink> DOM
Following the
deprecation
in Chrome 45, elements can no longer host more than one
Shadow Root
.
Blink> Performance APIs
To encourage adoption of standardized loading metrics API such as
Navigation Timing 2
,
nextHopProtocol
, and
Paint Timing API
, Chrome is
deprecating
the non-standardized
chrome.loadTimes
API.
For a complete list of all features (including experimental features) in this release, see the
Chrome 64 milestone hotlist
.
Posted by Charles Harrison, Pop-Up Popping Engineer
Labels
$200K
1
10th birthday
4
abusive ads
1
abusive notifications
2
accessibility
3
ad blockers
1
ad blocking
2
advanced capabilities
1
android
2
anti abuse
1
anti-deception
1
background periodic sync
1
badging
1
benchmarks
1
beta
83
better ads standards
1
billing
1
birthday
4
blink
2
browser
2
browser interoperability
1
bundles
1
capabilities
6
capable web
1
cds
1
cds18
2
cds2018
1
chrome
35
chrome 81
1
chrome 83
2
chrome 84
2
chrome ads
1
chrome apps
5
Chrome dev
1
chrome dev summit
1
chrome dev summit 2018
1
chrome dev summit 2019
1
chrome developer
1
Chrome Developer Center
1
chrome developer summit
1
chrome devtools
1
Chrome extension
1
chrome extensions
3
Chrome Frame
1
Chrome lite
1
Chrome on Android
2
chrome on ios
1
Chrome on Mac
1
Chrome OS
1
chrome privacy
4
chrome releases
1
chrome security
10
chrome web store
32
chromedevtools
1
chromeframe
3
chromeos
4
chromeos.dev
1
chromium
9
cloud print
1
coalition
1
coalition for better ads
1
contact picker
1
content indexing
1
cookies
1
core web vitals
2
csrf
1
css
1
cumulative layout shift
1
custom tabs
1
dart
8
dashboard
1
Data Saver
3
Data saver desktop extension
1
day 2
1
deceptive installation
1
declarative net request api
1
design
2
developer dashboard
1
Developer Program Policy
2
developer website
1
devtools
13
digital event
1
discoverability
1
DNS-over-HTTPS
4
DoH
4
emoji
1
emscriptem
1
enterprise
1
extensions
27
Fast badging
1
faster web
1
features
1
feedback
2
field data
1
first input delay
1
Follow
1
fonts
1
form controls
1
frameworks
1
fugu
2
fund
1
funding
1
gdd
1
google earth
1
google event
1
google io 2019
1
google web developer
1
googlechrome
12
harmful ads
1
html5
11
HTTP/3
1
HTTPS
4
iframes
1
images
1
incognito
1
insecure forms
1
intent to explain
1
ios
1
ios Chrome
1
issue tracker
3
jank
1
javascript
5
lab data
1
labelling
1
largest contentful paint
1
launch
1
lazy-loading
1
lighthouse
2
linux
2
Lite Mode
2
Lite pages
1
loading interventions
1
loading optimizations
1
lock icon
1
long-tail
1
mac
1
manifest v3
2
metrics
2
microsoft edge
1
mixed forms
1
mobile
2
na
1
native client
8
native file system
1
New Features
5
notifications
1
octane
1
open web
4
origin trials
2
pagespeed insights
1
pagespeedinsights
1
passwords
1
payment handler
1
payment request
1
payments
2
performance
20
performance tools
1
permission UI
1
permissions
1
play store
1
portals
3
prefetching
1
privacy
2
privacy sandbox
4
private prefetch proxy
1
profile guided optimization
1
progressive web apps
2
Project Strobe
1
protection
1
pwa
1
QUIC
1
quieter permissions
1
releases
3
removals
1
rlz
1
root program
1
safe browsing
2
Secure DNS
2
security
36
site isolation
1
slow loading
1
sms receiver
1
spam policy
1
spdy
2
spectre
1
speed
4
ssl
2
store listing
1
strobe
2
subscription pages
1
suspicious site reporter extension
1
TCP
1
the fast and the curious
23
TLS
1
tools
1
tracing
1
transparency
1
trusted web activities
1
twa
2
user agent string
1
user data policy
1
v8
6
video
2
wasm
1
web
1
web apps
1
web assembly
2
web developers
1
web intents
1
web packaging
1
web payments
1
web platform
1
web request api
1
web vitals
1
web.dev
1
web.dev live
1
webapi
1
webassembly
1
webaudio
3
webgl
7
webkit
5
WebM
1
webmaster
1
webp
5
webrtc
6
websockets
5
webtiming
1
writable-files
1
yerba beuna center for the arts
1
Archive
2024
Aug
Jun
May
Apr
Mar
Feb
2023
Nov
Oct
Sep
Aug
Jun
May
Apr
Feb
2022
Dec
Sep
Aug
Jun
May
Apr
Mar
Feb
Jan
2021
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2020
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2019
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2018
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2017
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2016
Dec
Nov
Oct
Sep
Aug
Jun
May
Apr
Mar
Feb
Jan
2015
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2014
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2013
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2012
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2011
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2010
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2009
Dec
Nov
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2008
Dec
Nov
Oct
Sep
Feed
Follow @ChromiumDev
Give us feedback in our
Product Forums
.