文/彼洋
简介
2021年1月19日,时隔两个月后,Chrome 发布 M88。该版本的显著特点是,几个比较大的下线计划终于完成,包括FTP、Flash、WebComponents v0、混合内容下载等。
新增稳定功能
Manifest v3
Chrome 88 现在支持使用 Manifest v3 构建的扩展程序,用户可以将其上传到 Chrome 网上应用商店。Manifest v3 是一个新的扩展平台,可使 Chrome 扩展更安全,更高效,更尊重隐私。
比如,Manifest v3 不允许使用远程托管的代码,这可以帮助 Chrome Web Store 审核人员更好地了解扩展程序带来的风险,并且允许你更快地更新扩展。
又如,它引入了service worker,来取代后台页面,因为 service worker 只会按需存在于内存中,它会占用更少的系统资源。
更多信息,请移步链接,它会告诉你如何把现有扩展迁移到manifest v3。
CSS aspect-ratio 属性
在以前,只有某些特定的元素具有长宽比,例如 image。对于它们,我们仅需指定宽度或高度,元素会根据固有长宽比自动计算另一个。
<!-- Height is auto-computed from width & aspect ratio -->
<img src="..." style="width: 800px;">
在 Chrome 88 中, aspect-ratio 属性可让你显式指定宽高比,从而实现类似的行为。
.square {
aspect-ratio: 1 / 1;
}
你也可以通过 CSS4 的 not 选择器,来实现渐进增强。
.square {
aspect-ratio: 1 / 1;
}
@supports not (aspect-ratio: 1 / 1) {
.square {
height: 4rem;
width: 4rem;
}
}
查看demo,请移步链接。
大幅限制链式 JavaScript 定时器
为了减少CPU和电池使用率,Chrome 从 M87 开始就在优化隐藏页面,在 M88 中,特定情况下会大幅限制隐藏页面的链式 JavaScript 计时器。
如果你在一个 setTimeout 里调用了同一个 setTimeout,这就相当于链式调用了:
let chainCount = 0;
function setTimeoutChain() {
setTimeout(() => {
chainCount++;
console.log(`This is number ${chainCount} in the chain`);
setTimeoutChain();
}, 500);
}
在 Chrome 88 中,当以下所有的条件都成立时,你的 setTimeout 调用就会被节流限制:
-
该页面已经隐藏 5 分钟以上(用户当前打开了其他的页面)
-
你链式调用的计数是 5 或更多次
-
该页面已经静音 30 秒以上
-
未使用 WebRTC
在满足这种情况下,浏览器将每分钟检查一次定时器,你定时器里的逻辑也会在每分钟内分批处理。Chrome 官方推荐使用 setInterval 来解决这个问题。
更多信息,请移步链接。
废弃&删除的功能
页面卸载时不允许弹窗
自从Chrome 80开始,不允许在页面卸载时使用 window.open 方法来打开新页面,不过企业用户可以通过 AllowPopupsDuringPageUnload 字段来允许在页面卸载时打开弹窗。从Chrome 88开始,该字段也会被废除。
完全禁用 FTP
Chrome FTP功能的使用量较低,而且实现有bug,存在安全隐患,何况各平台都有更好用的FTP客户端,不值得继续维护。从 M72 开始,Chrome 便已着手阉割 FTP 功能,从 M86 开始,Chrome 正式开始了禁用 FTP 的过程,到 88 版本发布后,FTP 被完全禁用,禁用节奏如下:
-
Chrome 86:默认情况下,大多数用户仍启用 FTP,但对于 pre-release channels 禁用了 FTP,并且将对稳定用户的百分之一进行实验性关闭。在此版本中,用户可以使用 --enable-ftp 命令或 --enable-features=FtpProtocol 从命令行重新启用它 。
-
Chrome 87:默认情况下,百分之五十的用户将禁用 FTP 支持,但可以使用上面列出的 flag 启用 FTP 支持。
-
Chrome 88:FTP 支持被完全禁用
完全禁用 Flash
Chrome 在 83 版本对用户使用 Flash 开启了进一步提示,比如如果提示激活 Flash 插件时并导致状态更改,将会再次给予警告。
2020 年 12 月 31 日,Flash 达到了正式的生命终点,Adobe 正式停止支持该软件。1 月 12 日,Adobe 开始直接阻止 Flash 内容播放。
完全禁用混合内容下载
如上面的过程,从 M81 开始, Chrome 阻止混合内容的下载,并在各个版本开启不同文件类型的阻止,到 M88 版本,所有文件类型的混合内容下载被完全阻止。
删除 WebComponents v0
从 M80 版本开始的 WebComponents v0下线计划,到 M88 终于迎来了尾声。Chrome 不再支持Web Components v0,而是用 Web Components v1 取代它,并且 Safari、Firefox、Edge 都支持了这项改动。