Firefox 66 面向开发者的发布说明
本文介绍 Firefox 66 中会影响开发者的变化。Firefox 66 已于 2019 年 3 月 19 日发布。
Web 开发人员的变更
开发者工具
- 现在可以在网络控制台的自动补全弹出窗口中执行 JavaScript 的 getter (Firefox bug 1499289)。
- 在经过一段时间的损坏后,窗口方法
alert()、prompt()和confirm()现在可以在响应式设计模式中再次正常工作 (Firefox bug 1273997)。 - 你可以通过右键单击并从上下文菜单中选择“将可见消息导出到剪贴板”,将控制台的输出复制到剪贴板。
HTML
- 现在支持从
file:URL 加载 UTF-8 编码的 HTML(和纯文本)文件,无需<meta charset="utf-8">或 UTF-8 BOM,这使得在将此类文件上传到服务器之前在本地处理它们变得更加容易。你仍然需要确保服务器在此类文件的Content-TypeHTTP 标头中发送charset=utf-8,否则用于本地文件的检测机制会在网络情况下破坏增量加载 (Firefox bug 1071816)。
移除
x-moz-errormessage属性已从<input>元素中移除 (Firefox bug 1513890)。你应该使用约束验证 API 来实现自定义验证消息。
CSS
-
Firefox 桌面版(但移动版尚未)已实现滚动锚定,其中包括
overflow-anchor属性 (Firefox bug 1305957)。 -
我们已经实现了区分大小写的属性选择器修饰符
s(Firefox bug 1512386)。 -
几个逻辑属性的简写形式已经实现,同时还有流相对的边框圆角属性
padding-block和padding-inline(Firefox bug 1519847)。margin-block和margin-inline(Firefox bug 1519944)。inset、inset-block和inset-inline(Firefox bug 1520229)。border-block-color、border-block-style、border-block-width、border-inline-color、border-inline-style和border-inline-width(Firefox bug 1520236)。border-block和border-inline(Firefox bug 1520396)。border-start-start-radius、border-start-end-radius、border-end-start-radius和border-end-end-radius(Firefox bug 1520684)。
-
我们实现了
overflow-inline和overflow-block媒体查询 (Firefox bug 1422235)。 -
grid-template-columns和grid-template-rows现在可以根据其规范中规定的规则进行动画处理 (Firefox bug 1348519)。 -
我们现在支持对表格单元格和列宽使用带有百分比的
calc()(Firefox bug 957915)。 -
min-content和max-content关键字现在无需前缀即可使用 (Firefox bug 1322780)。这些可以设置在
SVG
无新增。
移除
- 我们移除了对
xml:base属性的支持 (Firefox bug 903372)。
JavaScript
无更改。
API
新的 API/变更
- 在 66 版本成为 Firefox 正式版后不久,将默认阻止自动播放音频(Firefox bug 1487844,有关推出详情,请参阅 Firefox bug 1535667)。该功能将逐步向用户推出,直到所有人都能使用。
DOM
- 已实现
HTMLSlotElement.assignedElements()方法 (Firefox bug 1425685)。 - 已实现
TextEncoder.encodeInto()方法 (Firefox bug 1514664)。
DOM 事件
- 已实现
InputEvent.inputType属性 (Firefox bug 1447239)。 Window.event和Event.returnValue属性——最初是 IE 的专有功能,后来为了兼容性目的也被其他浏览器支持——在 Firefox 66 中被重新引入,此前它们分别在 63 和 64 版本中首次添加,但随后因兼容性问题再次被移除。- 从 66 版本起,当
keypress事件对象的KeyboardEvent.keyCode属性为 0 时,其值将与KeyboardEvent.charCode相同。反之,当charCode为 0 时,它将与keyCode相同。这种镜像行为与其他浏览器匹配,预计将解决大多数相关的兼容性问题,但用户代理嗅探可能会在某些 JavaScript 库中引起进一步的问题。请注意,从规范的角度来看,我们已经从分离模型切换到了合并模型(请参阅 UI 事件规范中的如何确定按键事件的 keyCode)。
媒体、Web Audio 和 WebRTC
- 新的 AV1 视频编解码器现已在 macOS 和 Windows(适用于 Intel 处理器)上默认启用。Linux 支持将在 Firefox 67 中提供 (Firefox bug 1521181, Firefox bug 1452146, 和 Firefox bug 1534814)。
MediaDevices的getDisplayMedia()方法(可通过navigator.mediaDevices.getDisplayMedia()访问)已被添加并与规范同步。该方法允许你将屏幕或屏幕的一部分捕获为MediaStream,以进行操作或共享 (Firefox bug 1321221)。- 作为最终弃用 Firefox 特有的基于
getUserMedia()的屏幕和窗口内容捕获方法的一步,非标准的mediaSource约束现在将screen和window这两个值视为相同。现在,两者都会向用户展示一个包含屏幕和窗口的列表供其选择 (Firefox bug 1474376)。 - 已添加
RTCOutboundRtpStreamStats.qpSum。它测量了视频轨道上发送或接收的每一帧的量化参数值的总和。这个数字越高,流的压缩程度可能就越高 (Firefox bug 1347070)。 - 作为在未来 Firefox 更新中实现功能策略支持过程中的一步,
getUserMedia()不能再在没有适当内容来源的情况下使用,例如在沙盒化的<iframe>中调用,或从用户在地址栏中输入的dataURL 调用。有关更多详细信息,请参阅 MediaDevices.getUserMedia() 页面上的安全部分 (Firefox bug 1371741)。
移除
- 旧版的 WebRTC
PeerConnection.getStats()方法已被移除,相关的类型也一同移除 (Firefox bug 1328194)。
网络
Accept头的默认值已更改为*/*(Firefox bug 1417463)。
安全
无更改。
插件
无更改。
WebDriver 符合性 (Marionette)
API 更改
-
已添加
WebDriver:NewWindow以支持打开新的浏览上下文,可以是窗口或标签页 (Firefox bug 1504756)。 -
如果指定的元素不属于当前的浏览上下文,
WebDriver:SwitchToFrame现在会引发no such element错误 (Firefox bug 1517196)。 -
WebDriver:ExecuteScript和WebDriver:ExecuteAsyncScript不再支持不符合规范的scriptTimeout参数。请改用WebDriver:SetTimeout或timeouts能力来定义此值 (Firefox bug 1510929)。- 此外,现在支持无限脚本超时 (Firefox bug 1128997)。
-
WebDriver:SetWindowRect不再在其响应中返回窗口状态 (Firefox bug 1517587)。
错误修复
WebDriver:TakeScreenshot现在使用Document.documentElement的Element.clientWidth和Element.clientHeight属性,而不是视口尺寸 (Firefox bug 1385706)。- 已应用各种修复,使窗口操作命令在不同平台上更加可靠 (Firefox bug 1522408, Firefox bug 1478358, Firefox bug 1489955)。
附加组件开发人员的变更
API 更改
菜单
- “bookmark”
type的扩展菜单项也将出现在书签侧边栏 (Ctrl+B) 和库窗口 (Ctrl+Shift+B) 中 (Firefox bug 1419195)。
清单更改
无更改。
另见
- Hacks 发布文章:Firefox 66:寂静之声