As Physical Web-enabled beacons are becoming more widespread, developers are experimenting with the platform in various ways. One Physical Web demo posted by a Mozilla community contributor shows users how to use bluetooth beacons to discover and interact with a drone. Brookwood Middle School uses beacons from BKON to circulate class notes, sports accomplishments, and news updates. Radius Networks, a beacon manufacturer, recently deployed 1,500 beacons to help attendees of CES® (Consumer Electronics Show) navigate showrooms. The Golden State Warriors utilize the Physical Web with the help of Signal360 to provide fans with highlight videos and welcome content at Oracle Arena.
Physical Web bluetooth beacons enabled a scavenger hunt at CES® 2016.
Now, Physical Web developers can reach Chrome for Android users as well, starting with the Beta channel and rolling out more widely soon. When these users walk by a beacon for the first time, they’ll receive a notification allowing them to enable the Physical Web. On future encounters with beacons, users can quickly see a list of nearby URLs by tapping on a non-vibrating notification waiting for them.
Physical Web experience on Chrome for Android
Developers can make their web content discoverable on the Physical Web by configuring an Eddystone-supported beacon to broadcast a URL of their choice with the Eddystone-URL frame type. Now that the Physical Web is tightly integrated into Chrome for Android, a single deployment can deliver contextual information to Chrome users across multiple mobile platforms.
As we continue to improve the Physical Web experience, we’re excited to see what types of contextual experiences developers build. We encourage anyone to join the conversation on our mailing list and visit the Physical Web cookbook to learn more about what’s possible.
Modern websites often have CSS files with repeated values, such as a few colors reused throughout the page in a color scheme. Altering this data can be tedious and error-prone, since it’s scattered throughout one or more CSS files. To improve this, Chrome now supports CSS custom properties, allowing developers to define property variables in CSS without using external frameworks. Developers can then use thevar() function to reference these custom properties anywhere in the document.
Changing a custom property can update multiple components in a website
CSS custom properties also inherit across shadow roots, so a web component can provide a “style API” that makes it possible to tweak and theme the component without knowing about its internals. The Polymer library uses this platform feature to simplify customizing components.
Background sync with service workers
Previously, sites could lose local changes or become out of sync if a user didn’t stay on the site until updates could be sent over the network. For example, an email client might lose a pending message if the user hit "send" and quickly navigated away. The new Background Sync API improves networking reliability by allowing service workers to schedule a one-off sync of a user’s local changes when the device next connects to the network, even if the site isn’t open.
The <keygen> element is used to generate a key-pair as part of an HTML form. While this can be used to enhance user security, <keygen> and user certificates sent with the MIME type of application/x-x509-user-cert can be exploited to disrupt a user’s secure communication, interfere with the functioning of their devices, or track the user without consent. Going forward, <keygen> will return an empty string by default and user certificates sent with the MIME type of application/x-x509-user-cert will no longer be automatically downloaded and installed.
Sites can detect if a user has requested reduced data usage and respond with a lighter experience by checking the Save-Data header field.
Minor changes
Chrome’s content security policy now matches ‘script-src http:’ to both HTTP and HTTPS, preventing developers from accidentally rejecting secure resources.
Developers now have the option to ignore case when matching attribute selectors.
Developers can now create pop-ups that don’t expose which page opened them using 'rel=noopener'.
addEventListener() and removeEventListener() now require their first two arguments and can have the "capture" option specified using dictionary syntax, improving spec compliance and flexibility.