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
- 现在在所有版本中都启用了 日期 和 时间
<input>
类型 (Firefox 错误 1399036)。
CSS
- 现在支持
display-mode
媒体查询的minimal-ui
和standalone
值 (Firefox 错误 1369815)。另请参阅 Web 应用清单display
字段。 grid
简写不再重置grid-row-gap
和grid-column-gap
属性 (Firefox 错误 1387410)。- 已删除
layout.css.clip-path-shapes.enabled
首选项 (Firefox 错误 1399767)。此首选项允许禁用<basic-shape>
在clip-path
中的支持。此支持已在 Firefox 54 中发布,并且无法再禁用。
Quantum CSS 说明
以下错误已在 Quantum 中修复
- 即使由于
circle
和gold
之间缺少逗号而导致它们不应该工作,但像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
属性值设置为normal
或none
,::before
和::after
伪元素仍会生成。根据规范,它们不应该生成 (Firefox 错误 1387931)。 - 另一个 Gecko 错误意味着
background-position
属性无法在包含不同数量的<position>
值的两个值之间进行转换,例如background-position: 10px 10px;
和background-position: 20px 20px, 30px 30px;
(请参阅 Firefox 错误 1390446)。
SVG
无更改。
JavaScript
- 已删除最初作为 EcmaScript for XML (E4X) 部分的非标准
for each...in
循环。请改用for...of
,并参阅 警告:JavaScript 1.6 的 for-each-in 循环已弃用 以获取迁移帮助。(Firefox 错误 1083470)。 Object.prototype.watch()
和unwatch()
方法已弃用,现在在使用时会发出警告,并且很快将被删除 (Firefox 错误 934669)。- 已删除非标准的
Iterator
和StopIteration
对象以及旧版迭代协议 (Firefox 错误 1098412)。 - 现在启用了异步生成器 (Firefox 错误 1352312)。
- 现在启用了 for await (... of ...) 语法 (Firefox 错误 1352312)。
API
新 API
- 现在默认启用了
PerformanceObserver
API (Firefox 错误 1386021)。 - 已添加
AbortController
和AbortSignal
接口(称为中止 API),允许根据需要中止 DOM 请求(例如 获取请求) (Firefox 错误 1378342)。 - [2] 已实现并默认启用了 存储 API (Firefox 错误 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 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)。
插件
无更改。
其他
- Firefox 无头模式 现在包含一个
-screenshot
标志,允许您直接从命令行获取网站屏幕截图(Firefox bug 1378010)。
Web 平台移除内容
HTML
- 由于各种 Web 兼容性问题(例如 Firefox bug 1405761),Firefox 57 中已禁用
<link rel="preload">
(请参阅 使用 rel="preload" 预加载内容)。一个改进的版本,适用于不可缓存的资源,预计将在 Firefox 58 中发布。
API
- Mozilla 专有的 Social API 已完全移除(Firefox bug 1388902)。
SVG
无更改。
附加组件和 Mozilla 开发者更改
注意:从 Firefox 57 开始,已删除对基于 XPCOM 的加载项的所有支持。所有扩展程序都必须转换为新的 浏览器扩展程序(也称为 WebExtensions),否则它们将无法工作。
WebExtensions
以下 API 已添加或扩展
书签
- 通过
bookmarks.BookmarkTreeNodeType
支持分隔符
- 通过
browser_action
- 用于亮/暗主题图标的
theme_icons
属性
- 用于亮/暗主题图标的
browserAction
browserSettings
browsingData
剪贴板
上下文标识
onCreated
onRemoved
onUpdated
contextualIdentities.ContextualIdentity
中的colorCode
和iconUrl
devtools.panels
下载
downloads.download()
中的incognito
选项downloads.DownloadItem
中的estimatedEndTime
属性
查找
pageAction.openPopup()
隐私
代理
FindProxyForURL()
现在可以返回对象
运行时
- Android 上支持
runtime.openOptionsPage()
- Android 上支持
会话
sidebarAction
存储
选项卡
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
选项
webRequest
filterResponseData()
webRequest
事件中的proxyInfo
属性
窗口
windows.create()
中的allowScriptsToClose
选项
旧版本
- Firefox 56 开发者版
- Firefox 55 开发者版
- Firefox 54 开发者版
- Firefox 53 开发者版
- Firefox 52 开发者版
- Firefox 51 开发者版
- Firefox 50 开发者版
- Firefox 49 开发者版
- Firefox 48 开发者版
- Firefox 47 开发者版
- Firefox 46 开发者版
- Firefox 45 开发者版
- Firefox 44 开发者版
- Firefox 43 开发者版
- Firefox 42 开发者版
- Firefox 41 开发者版
- Firefox 40 开发者版
- Firefox 39 开发者版
- Firefox 38 开发者版
- Firefox 37 开发者版
- Firefox 36 开发者版
- Firefox 35 开发者版
- Firefox 34 开发者版
- Firefox 33 开发者版
- Firefox 32 开发者版
- Firefox 31 开发者版
- Firefox 30 开发者版
- Firefox 29 开发者版
- Firefox 28 开发者版
- Firefox 27 开发者版
- Firefox 26 开发者版