Firefox 57 (Quantum) 开发者版

本文档提供了 Firefox 57 (又名 Firefox Quantum) 中影响开发人员的变更信息。Firefox 57 已于 2017 年 11 月 14 日发布。

Firefox 57 === Firefox Quantum

Firefox 57 的发布名称被定为 Quantum,源于旨在从底层重建 Firefox 的 Firefox Quantum 工程项目,它带来了重大的性能、稳定性和视觉改进。这是 Firefox 第一个搭载这些改进的版本,因此我们希望借此机会加以宣传。

注意:要了解此版本中 Quantum 功能的更多信息,请参阅 Dan Callahan 撰写的Firefox Quantum 开发者版:史上最快的 Firefox,搭载 Photon UI 和更优化的工具

Firefox 的全新并行 CSS 引擎(也称为 Quantum CSSStylo)已在 Firefox 57 桌面版中默认启用,移动版 Firefox 将在稍后跟进。除了性能方面的全面提升之外,开发人员不应注意到任何显著差异。然而,Stylo 中存在一些细微的功能差异,旨在修复应予消除的非标准 Gecko 行为。我们将在参考页面和发行说明中酌情报告此类差异(请参阅Quantum CSS 注意事项)。

面向网络开发者的变更

开发者工具

无更改。

HTML

CSS

Quantum CSS 注意事项

以下错误已在 Quantum 中修复

  • radial-gradient(circle gold,red) 这样的径向渐变值将在旧的 Gecko 样式系统中工作,尽管它们不应该工作,因为 circlegold 之间缺少逗号(Firefox bug 1383323)。
  • 当您将屏幕外元素动画到屏幕上但指定了延迟时,Gecko 不会在某些平台(例如 Windows)上重新绘制(Firefox bug 1383239)。
  • 在 Gecko 中,如果 <details> 元素上存在活动的 animation,则无法使用 open 属性将其默认设置为打开(Firefox bug 1382124)。
  • 在 Gecko 中,当从指定了颜色的 text-shadow 过渡到未指定颜色的 text-shadow 时,transitions 将不起作用(Firefox bug 726550)。
  • 在 Gecko 中,取消一个填充动画(例如,设置了 animation-fill-mode: forwards 的动画)可以触发在同一元素上设置的过渡,尽管只触发一次(有关更多信息,请参阅 Firefox bug 1192592这些测试用例)。一般来说,声明式动画不应触发过渡。
  • 在 Gecko 中,使用 em 单位的动画不受动画元素的父级 font-size 变化的影响,但它们应该受到影响(Firefox bug 1254424)。
  • Gecko 处理 font-size 继承的方式也与 Quantum CSS 不同,这意味着对于某些语言设置,继承的字体大小最终会比预期小(请参阅 Firefox bug 1391341)。
  • Gecko 在解析 @-moz-document 规则的 domain()url-prefix() URL 匹配函数时,重用了用于解析 url-token 的相同机制。Quantum CSS 不使用相同的机制,并且当 token 包含括号或引号时,它不认为 token 无效(Firefox bug 1362333)。
  • 在 Gecko 中,当您将系统字体设置为 canvas 2D 上下文的 font 值(例如 menu)时,获取字体值无法返回预期的字体(它返回空)。这已在 Quantum 中修复。(Firefox bug 1374885)。
  • 在 Gecko 中,当您创建一个分离的子树(例如,使用 createElement() 创建但尚未插入 DOM 的 <div>)时,子树的根元素被设置为块级元素。在 Quantum CSS 中,这被设置为内联元素,符合规范(Firefox bug 1374994)。
  • 在 Gecko 中,当 calc() 表达式用作 radial-gradient() 函数的半径分量时,它们会被拒绝,导致该值无效(Firefox bug 1376019)。
  • 在 Gecko 中,calc(1*2*3) 未能成功解析;Quantum CSS 修复了此问题(Firefox bug 1379467)。
  • 在 Quantum CSS 中,calc() 在规范中所有解释应支持的地方都得到了支持Firefox bug 1350857)。在 Gecko 中则不支持。
  • Gecko 存在一个 bug,即即使 content 属性值设置为 normalnone::before::after 伪元素仍然会生成。根据规范,它们不应该生成(Firefox bug 1387931)。
  • 另一个 Gecko bug 意味着 background-position 属性无法在包含不同数量的 <position> 值之间进行过渡,例如 background-position: 10px 10px;background-position: 20px 20px, 30px 30px;(请参阅 Firefox bug 1390446)。

SVG

无更改。

JavaScript

API

新 API

DOM

DOM 事件

无更改。

媒体和 WebRTC

  • RTCDataChannel 现在支持任意大小(最高 1GiB,尽管 256kiB 更具互操作性)的消息,通过在 SCTP 消息上使用记录结束(EOR)标志。有关更多信息,请参阅理解消息大小限制Firefox bug 979417)。

    注意:由于 Firefox 尚未支持 SCTP 流调度器和用户消息交错协议,该协议提供了交错来自多个源的 SCTP 消息的能力,发送大数据对象可能会导致所有其他 SCTP 流量严重延迟。请参阅 Firefox bug 1381145 以跟踪在 Firefox 中实现和部署流调度器支持的进展。

  • 如果尝试发送的消息大小与接收方的用户代理不兼容,RTCDataChannel.send() 方法现在可以抛出 TypeError 异常(这是 Firefox bug 979417 的一部分实现)。

  • MediaStream Recording API 已更新,用于报告录制过程中发生问题的 error 事件现在是 MediaRecorderErrorEvent 类型,而不是通用事件。

  • 更新了 OfflineAudioContext 的文档,因为其构造函数输入现在可以通过对象而不是参数列表来指定(Firefox bug 1388591)。

  • Web Audio API 现在正确支持多声道输出(Firefox bug 1378070)。

安全

  • resource:// URL 不再泄露信息(Firefox bug 863246
  • Data URL 现在被视为唯一的非透明源,而不是继承负责导航的设置对象的源(Firefox bug 1324406)。

插件

无更改。

其他

Web 平台移除的内容

HTML

API

SVG

无更改。

面向附加组件和 Mozilla 开发者的变更

注意:从 Firefox 57 开始,所有对基于 XPCOM 的附加组件的支持都已被移除。所有扩展都必须转换为新的 浏览器扩展(也称为 WebExtensions),否则它们将无法工作。

WebExtensions

以下 API 已添加或扩展