Chrome 60 中的弃用和移除内容

Joe Medley
Joe Medley

在几乎所有版本的 Chrome 中,我们都会看到大量的更新, 产品改进、性能以及 Web 功能 平台。本文介绍了 Chrome 60 此功能自 6 月 8 日起处于 Beta 版阶段。此列表随时可能更改。

安全

crypto.subtle 现在需要安全源

Web Crypto API 已支持,因为 Chrome 37 一直运行不安全的 来源。得益于 Chrome 长期以来的政策, 更倾向于通过安全的源提供强大的功能 crypto.subtle 仅在安全源上可见。

打算移除 | Chromium bug

移除内容启动的顶部帧导航到数据网址

由于非技术性浏览器用户不熟悉 data: 方案被用于欺骗和钓鱼式攻击的越来越多 攻击。为防止出现这种情况,我们禁止网页加载 data: 个网址 放在顶部框架中这适用于 <a> 个标记、window.openwindow.location 和类似机制。data:架构对 加载的资源

此功能已在 Chrome 58 中弃用,现在已被移除。

打算移除 | Chromestatus Tracker | Chromium bug

针对某些 blob 暂时停用 navigator.sendBeacon()

navigator.sendBeacon() 函数已可供使用 自 Chrome 39 起。 按照最初的实现方式,函数的 data 参数可以包含 类型未在 CORS 安全列出的任意 blob。我们认为,这有可能 但还没有任何人尝试利用它。因为我们不会 有合理的立即解决此问题时,sendBeacon() 无法 不再可对类型未在 CORS 安全列出的 blob 上调用。

虽然此更改是针对 Chrome 60 实施的,但后来已合并 返回 Chrome 59。

Chromium 错误

CSS

使影子穿孔后代组合器的行为类似于后代组合器

影子穿孔后代组合器 (>>>),属于 CSS 范围模块级别 1 ,旨在匹配特定祖先元素的子元素 即使它们出现在影子树中也是如此。这种做法存在一些限制。 首先,根据规范, 只能用于 JavaScript 调用,例如 querySelector(), 使用样式表。更重要的是,浏览器供应商无法使 工作范围会超出 Shadow DOM 的一个级别。

因此,已从相关规范中移除后代组合器 包括 Shadow DOM v1。移除此选择器即可中断网页 因此我们选择将 将 combinator 映射到后代 combinator。原始行为 已在 Chrome 45 中弃用。 新行为是在 Chrome 61 中实现的。

打算移除 | Chromestatus Tracker | Chromium bug

JavaScript

弃用并移除了 RTCPeerConnection.getStreamById()

大约两年前,getStreamById() 已被从 WebRTC 规范中移除。大多数其他浏览器 已从其实施中将其移除。尽管这个函数是 一般被认为很少被用过,还认为 与除 Safari 以外的基于 Edge 和 WebKit 的浏览器之间的互操作性风险 其中 getStreamById() 仍然受支持。开发者需要替代解决方案 具体实现可在下面的“移除 intent”中找到示例代码。

Chrome 62 中移除了此功能。

打算移除 | Chromestatus Tracker | Chromium bug

弃用了 SVGPathElement.getPathSegAtLength

两年前,getPathSegAtLength() 已被从 SVG 规范中移除。 由于 httparchive 中使用此方法的命中次数较少, 在 Chrome 60 中弃用我们预计会在 Chrome 62 中将其移除 会在 10 月初或中旬发货。

打算弃用 | Chromestatus Tracker | Chromium bug

将 getContextAttributes() 移到了标志后面

以下系统支持 getContextAttributes() 函数: CanvasRenderingContext2D 从 2013 年开始。不过,该功能不属于任何标准,也尚未成为 其中一部分。它应该在 --enable-experimental-canvas-features 命令行 flag,但被误认为 错误。在 Chrome 60 中,这一问题得到了纠正。我们认为, 因为没有任何数据表明有人在使用该方法。

Chromium 错误

移除 Headers.prototype.getAll()

Headers.prototype.getAll() 函数正在根据最新要求移除 Fetch 规范的版本。

打算移除 | Chromestatus Tracker | Chromium bug

移除 indexDB.webkitGetDatabaseNames()

当索引型数据库在 Chrome 中相对较新且带有前缀时,我们添加了此功能 这也太疯狂了API 异步返回现有数据库的列表 这似乎很有道理。

遗憾的是,该设计存在缺陷,结果可能会立即过时 因此它只能用于日志记录,而不是用于严重的 应用逻辑通过 GitHub 问题跟踪/链接 关于替代方法的讨论,这就需要采用不同的方法。 由于缺乏跨界, 浏览器进度,库作者已经解决了这个问题。

需要此功能的开发者需要开发自己的解决方案。 例如,像 Dexie.js 这样的库使用全局表 而后者本身就是另一个用于跟踪数据库名称的数据库。

此功能已在 Chrome 58 中弃用,现在已被移除。

打算移除 |Chromestatus Tracker | Chromium bug

删除 WEBKIT_KEYFRAMES_RULE 和 WEBKIT_KEYFRAME_RULE

非标准 WEBKIT_KEYFRAMES_RULEWEBKIT_KEYFRAME_RULE 常量 已从 CSS 规则。 开发者应改用 KEYFRAMES_RULEKEYFRAME_RULE

打算移除 |Chromestatus Tracker | Chromium bug

界面

beforeunload 对话框需要用户手势

从 Chrome 60 开始,beforeunload 对话框仅在 尝试显示已收到用户手势或用户互动(或者 任何嵌入的帧已收到此类手势)。需要明确的是,这不是 对 beforeunload 事件的调度有所更改。它只是更改为 该对话框是否显示

beforeunload 对话框是应用模态对话框。因此, 是用户恶意的,也就是说,它会通过询问用户 决策。此功能具有正面用途。例如,它常用于 在通过导航会丢失数据时,警告用户。

虽然页面为 beforeunload 对话框提供文本的功能原为 不久前就被移除了,但 beforeunload 对话框仍然会成为滥用行为的途径。在 特别是,beforeunload对话框是诈骗网站的成分, 自动播放音频和威胁性文字提供了 Chromium 的背景信息 提供“你确定要离开此页面吗”消息就会变得令人担忧

我们希望能够顺利完成各项工作,并且只允许合理使用 beforeunload 对话框。对话框的理想用法是用户所处的状态可能 。如果用户从未与网页互动过,则用户无法 这样我们就不会因 在这种情况下,此对话框会停止显示。