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 CSS 或 Stylo)已在 Firefox 57 桌面版中默认启用,移动版 Firefox 将在稍后跟进。除了性能方面的全面提升之外,开发人员不应注意到任何显著差异。然而,Stylo 中存在一些细微的功能差异,旨在修复应予消除的非标准 Gecko 行为。我们将在参考页面和发行说明中酌情报告此类差异(请参阅Quantum CSS 注意事项)。
面向网络开发者的变更
开发者工具
无更改。
HTML
- 日期和时间
<input>
类型现已在所有版本中启用(Firefox bug 1399036)。
CSS
- 现在支持
display-mode
媒体查询的minimal-ui
和standalone
值(Firefox bug 1369815)。另请参阅 Web 应用清单display
字段。 grid
简写形式不再重置grid-row-gap
和grid-column-gap
属性(Firefox bug 1387410)。layout.css.clip-path-shapes.enabled
首选项已被移除(Firefox bug 1399767)。此首选项允许禁用clip-path
中的<basic-shape>
支持。此支持已在 Firefox 54 中发布,并且不能再被禁用。
Quantum CSS 注意事项
以下错误已在 Quantum 中修复
- 像
radial-gradient(circle gold,red)
这样的径向渐变值将在旧的 Gecko 样式系统中工作,尽管它们不应该工作,因为circle
和gold
之间缺少逗号(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
属性值设置为normal
或none
,::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
- 非标准的
for each...in
循环(最初是 ECMAScript for XML (E4X) 的一部分)已被移除。请改用for...of
。(Firefox bug 1083470)。 Object.prototype.watch()
和Object.prototype.unwatch()
方法已弃用,现在使用时会抛出警告,并且很快将被移除(Firefox bug 934669)。- 非标准的
Iterator
和StopIteration
对象以及 旧式迭代协议 已被移除(Firefox bug 1098412)。 - 异步生成器现在已启用(Firefox bug 1352312)。
- for await (... of ...) 语法现在已启用(Firefox bug 1352312)。
API
新 API
PerformanceObserver
API 现在默认启用(Firefox bug 1386021)。AbortController
和AbortSignal
接口(称为 Abort API)已添加,允许在需要时中止 DOM 请求(例如 fetch 请求)(Firefox bug 1378342)。- [2] Storage API 已实现并默认启用(Firefox bug 1399038)。
DOM
- Selection API 的
Selection.type
属性现已实现(Firefox bug 1359157)。 Document.createEvent('FocusEvent')
现在受支持(Firefox bug 1388069)。HTMLInputElement
接口的files
属性现在可设置(Firefox bug 1384030)。HTMLDocument.getSelection()
方法已移至Document
接口,因此可用于 XML 文档(Firefox bug 718711)。messageerror
事件现在已实现,并且可以通过在消息目标上实现的事件处理程序来响应其触发而运行代码——请参阅MessagePort
、DedicatedWorkerGlobalScope
、Worker
、BroadcastChannel
和Window
的messageerror
事件(Firefox bug 1359017)。- 当
Headers
值被迭代时,它们会自动按字典顺序排序,并且来自重复标头名称的值会被合并(Firefox bug 1396848)。
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)。
插件
无更改。
其他
- Firefox 无头模式现在包含一个
-screenshot
标志,允许您直接从命令行获取网站截图(Firefox bug 1378010)。
Web 平台移除的内容
HTML
<link rel="preload">
(请参阅 使用 rel="preload" 预加载内容) 已在 Firefox 57 中禁用,因为存在各种 Web 兼容性问题 (例如,Firefox bug 1405761)。预计将在 Firefox 58 中推出适用于不可缓存资源的改进版本。
API
- Mozilla 的专有 Social API 已被完全移除(Firefox bug 1388902)。
SVG
无更改。
面向附加组件和 Mozilla 开发者的变更
注意:从 Firefox 57 开始,所有对基于 XPCOM 的附加组件的支持都已被移除。所有扩展都必须转换为新的 浏览器扩展(也称为 WebExtensions),否则它们将无法工作。
WebExtensions
以下 API 已添加或扩展
-
- 通过
bookmarks.BookmarkTreeNodeType
支持分隔符
- 通过
-
- 用于明暗主题图标的
theme_icons
属性
- 用于明暗主题图标的
-
onCreated
onRemoved
onUpdated
contextualIdentities.ContextualIdentity
中的colorCode
和iconUrl
-
downloads.download()
中的incognito
选项downloads.DownloadItem
中的estimatedEndTime
属性
-
FindProxyForURL()
现在可以返回一个对象
-
- Android 上对
runtime.openOptionsPage()
的支持
- Android 上对
-
tabs.update()
中的loadReplace
选项tabs.Tab
、tabs.onUpdated
和tabs.query()
中的discarded
属性tabs.create()
可以打开“view-source:”URLtabs.Tab
、tabs.create()
、tabs.query()
和tabs.update()
中的openerTabId
属性
-
colors.toolbar
colors.toolbar_field
colors.toolbar_field_text
colors.toolbar_text
-
theme.update()
的windowId
选项
-
filterResponseData()
webRequest
事件中的proxyInfo
属性
-
windows.create()
中的allowScriptsToClose
选项