在 Chrome 76 中,我们添加了对以下内容的支持:
prefers-color-scheme
媒体查询,可为网站带来深色模式。- 全能搜索框中的安装按钮,可让您更轻松地在桌面设备上安装渐进式 Web 应用。
- 防止在移动设备上的渐进式 Web 应用中显示迷你信息栏。
- 更频繁地更新 WebAPK。
- 以及更多。
我是 Pete LePage,让我们深入了解 Chrome 76 中面向开发者的新变化!
PWA 多功能框安装按钮
在 Chrome 76 中,我们在地址栏(有时也称为全能搜索框)中添加了安装按钮,以便用户更轻松地在桌面设备上安装渐进式 Web 应用。
如果您的网站符合渐进式 Web 应用可安装性条件,Chrome 会在万能搜索框中显示一个安装按钮,以向用户表明您的 PWA 可供安装。如果用户点击安装按钮,这在本质上与对 beforeinstallprompt
事件调用 prompt()
相同;它会显示安装对话框,以便用户轻松安装您的 PWA。
如需了解完整详情,请参阅桌面设备上的渐进式 Web 应用的地址栏安装。
更好地控制 PWA 迷你信息栏
在移动设备上,如果您的网站符合渐进式网络应用可安装性条件,当用户首次访问该网站时,Chrome 会显示迷你信息栏。您曾向我们反映,希望能够阻止显示迷你信息栏,并改为提供自己的安装促销活动。
从 Chrome 76 开始,对 beforeinstallprompt
事件调用 preventDefault()
会停止显示迷你信息栏。
window.addEventListener('beforeinstallprompt', (e) => {
// Don't show mini-infobar
e.preventDefault();
// Stash the event so it can be triggered later.
deferredPrompt = e;
// Update UI to promote PWA installation
pwaInstallAvailable(true);
});
请务必更新界面,以便用户知道可以安装您的 PWA。 如需了解我们推荐的有关促进用户安装渐进式 Web 应用的最佳实践,请参阅促进 PWA 安装的模式。
WebAPK 更新速度更快
在 Android 设备上安装渐进式 Web 应用时,Chrome 会自动请求并安装 Web APK。安装后,Chrome 会定期检查 Web 应用清单是否发生了变化(例如,您更新了图标、颜色或更改了应用名称),以确定是否需要新的 WebAPK。
从 Chrome 76 开始,Chrome 会更频繁地检查清单,每天检查一次,而不是每三天检查一次。如果任何关键属性发生更改,Chrome 都会请求并安装新的 WebAPK,以确保标题、图标和其他属性是最新的。
如需了解完整详情,请参阅更频繁地更新 WebAPK。
深色模式
许多操作系统现在都支持深色模式或深色主题。
借助 prefers-color-scheme
媒体查询,您可以调整网站的外观和风格,使其与用户的首选模式相匹配。
@media (prefers-color-scheme: dark) {
body {
background-color: black;
color: white;
}
}
Tom 在 web.dev 上撰写了一篇很棒的文章《Hello darkness, my old friend》(黑暗,我的朋友,您好!),其中包含您需要了解的所有信息,以及有关如何构建样式表以同时支持浅色模式和深色模式的提示。
等等!
当然,这只是 Chrome 76 中面向开发者的部分变更,还有许多其他变更。
Promise.allSettled()
我个人非常期待 Promise.allSettled()
。它与 Promise.all()
类似,但它会等待所有 promise 都完成后再返回。
const promises = [
fetch('/api-call-1'),
fetch('/api-call-2'),
fetch('/api-call-3'),
];
// Imagine some of these requests fail, and some succeed.
await Promise.allSettled(promises);
// All API calls have finished (either failed or succeeded).
更轻松地读取 Blob
Blob
更易于读取,因为新增了 text()
、arrayBuffer()
和 stream()
三个方法;这意味着,我们不必再为文件读取器创建封装容器!
// New easier way
const text = await blob.text();
const aBuff = await blob.arrayBuffer();
const stream = await blob.stream();
// Old, wrapped reader
return new Promise((resolve) => {
const reader = new FileReader();
reader.addEventListener('loadend', (e) => {
const text = e.srcElement.result;
resolve(text);
});
reader.readAsText(file);
});
Async Clipboard API 中的图片支持
此外,我们还向 Asynchronous Clipboard API 添加了图片支持,以便您轻松通过编程方式复制和粘贴图片。
深入阅读
本文仅介绍了一些主要亮点,如需了解 Chrome 76 中的其他变更,请访问以下链接。
- Chrome 开发者工具 (76) 中的新变化
- Chrome 76 弃用和移除的功能
- ChromeStatus.com 上有关 Chrome 76 的更新
- Chrome 76 中的 JavaScript 新变化
- Chromium 源代码库更改列表
订阅
如需及时了解我们的最新视频,请订阅我们的 Chrome Developers YouTube 频道,这样每当我们发布新视频时,您就会收到电子邮件通知。
我是 Pete LePage,Chrome 77 发布后,我会立即为您介绍 Chrome 中的新变化!