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 开发者版:拥有 Photon UI 和更佳工具的史上最快的 Firefox

Firefox 的新并行 CSS 引擎——也称为 **Quantum CSS** 或 **Stylo**——在 Firefox 57 桌面版中默认启用,移动版 Firefox 将稍后推出。除了大量的性能改进之外,开发者应该不会注意到任何明显的差异。但是,Stylo 在功能上存在一些细微差异,这些差异是为了修复非标准的 Gecko 行为而实现的,这些行为应该被消除。我们将在参考页面和发布说明中报告此类差异(请参阅 Quantum CSS 说明)。

Web 开发者更改

开发者工具

无更改。

HTML

CSS

Quantum CSS 说明

以下错误已在 Quantum 中修复

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

SVG

无更改。

JavaScript

API

新 API

DOM

DOM 事件

无更改。

媒体和 WebRTC

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

    注意:由于 Firefox 尚未支持提供从多个来源交错 SCTP 消息的功能的 SCTP ndata 协议,因此发送大型数据对象可能会导致所有其他 SCTP 流量出现重大延迟。请参阅 Firefox bug 1381145 以跟踪在 Firefox 中实现和部署 ndata 支持的进度。

  • RTCDataChannel.send() 方法现在可以在尝试发送的消息大小与接收 用户代理 不兼容时抛出 TypeError 异常(这是作为 Firefox bug 979417 的一部分实现的)。
  • 媒体流录制 API 已更新,以便发送以报告录制过程中出现的错误的 error 事件现在是 MediaRecorderErrorEvent 类型,而不是泛型事件。
  • 更新了围绕 OfflineAudioContext 的文档,因为其构造函数的输入现在可以指定为对象,而不是作为参数列表(Firefox bug 1388591)。
  • Web Audio API 现在正确支持多通道输出(Firefox bug 1378070)。

安全

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

插件

无更改。

其他

Web 平台移除内容

HTML

API

SVG

无更改。

附加组件和 Mozilla 开发者更改

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

WebExtensions

以下 API 已添加或扩展

旧版本