Firefox 49 开发者版本发布说明
要测试 Firefox 最新的开发者功能,请安装 Firefox Developer Edition。 Firefox 49 于 2016 年 9 月 20 日发布。本文列出了对网络开发者、Firefox 和 Gecko 开发者以及附加组件开发者都有用的主要变化。
面向网络开发者的变更
开发者工具
-
现在,控制台中记录的 JavaScript 错误会提供一个“[了解更多]”链接,以获取更多调试帮助 (Firefox bug 1179876)。
-
CSS 自动补全:在自动补全弹出窗口中显示更多建议 (Firefox bug 1260419)。
-
动画检查器现在在开发者工具中公开动画性能信息 (Firefox bug 1254408)。
-
检查器的上下文菜单已重新组织,使其更整洁、更易于使用 (Firefox bug 1211613)。
-
检查器现在支持颜色值的
#RRGGBBAA和#RGBA语法 (Firefox bug 1271191)。 -
开发者工具不再将自闭合标签(例如
<br>和<img>)显示为在 HTML 页面上具有闭合标签;对于 XHTML 页面,行为保持不变 (Firefox bug 820926)。 -
无障碍功能改进!
- 工具箱在确保键盘焦点更可见方面做得更好 (Firefox bug 1242851)。
- 已为无标签控件添加无障碍标签 (Firefox bug 1242715)。
- 为检查器的标记视图添加了正确的树视图语义和键盘导航 (Firefox bug 1242694)。
-
网络监视器现在显示一个“原因”列,该列指示导致每个特定网络请求的原因 (Firefox bug 1134073)。
-
在 about:debugging 附加组件页面中,“重新加载”按钮仅对临时附加组件启用。它将对所有其他附加组件禁用 (Firefox bug 1273184)。
-
在 about:debugging Workers 页面中,如果服务工作线程与当前浏览器配置不兼容,则将在“服务工作线程”部分显示警告消息 (Firefox bug 1266415)。
-
about:debugging 现在有一个新的“标签页”页面可用,它提供当前 Firefox 实例中所有可调试标签页的完整列表 (Firefox bug 1266128)。
-
工具箱高级设置中的“禁用缓存”选项已重命名为“禁用 HTTP 缓存”,以明确这会影响 HTTP 缓存,而不是服务工作线程/ 缓存 API (bug(1253018))。
-
现在,存储检查器允许通过其自己的上下文菜单删除 IndexedDB 数据库 (Firefox bug 1205123),并且如果由于某种原因无法删除 IndexedDB(例如,如果仍有活动连接),它将显示警告消息 (Firefox bug 1268460)。
HTML
- 添加了对
<details>和<summary>元素的支持 (Firefox bug 1226455)。 <input>元素的pattern属性现在在底层 JavaScriptRegExp中使用'u'参数 (Firefox bug 1227906)。- 为了匹配规范更改,
<track>元素的kind属性的无效值现在被视为"metadata"而不是"subtitles"(Firefox bug 1269712)。 <iframe>元素的sandbox属性现在支持'allow-popups-to-escape-sandbox'和'allow-modals'值 (Firefox bug 1190641)。- 已删除对微数据属性和微数据 API 的支持 (Firefox bug 909633)。
<a>元素上的referrerpolicy属性现在支持'no-referrer-when-downgrade'和'origin-when-cross-origin'(Firefox bug 1178337)。- 已删除
<label>元素的form内容属性。HTMLLabelElement.form属性仍然存在,但现在返回与标签控件关联的表单(如果存在控件且该控件与表单关联) (Firefox bug 1268852)。
CSS
-
添加了
background-position-x和background-position-y,它们允许单独指定绘制背景图像的水平和垂直偏移量;它们是background-position的组成部分 (Firefox bug 550426)。 -
添加了对
background-repeat的round和space关键字的支持 (Firefox bug 548372)。 -
在
background-clip上,关键字text现已默认激活 (Firefox bug 1264905)。 -
添加了对使用 4 位和 8 位 CSS 十六进制颜色值 (#RRGGBBAA 和 #RGBA) 指定带 alpha 通道颜色值 (Firefox bug 567283) 的支持。
-
伪类
:dir已取消前缀 (Firefox bug 859301)。 -
在我们的实验性实现(尚未默认激活)中,
clip-path现在可以在<basic-shape>值之间进行插值 (Firefox bug 1110460)。 -
添加了
q长度单位 (Firefox bug 1274526)。 -
属性
text-align-last已取消前缀 (Firefox bug 1039541)。 -
添加了对
overflow-wrap的支持,替换了仍然作为替代名称受支持的word-wrap(Firefox bug 955857)。 -
我们的实验性 CSS 网格实现已得到改进
- 为
grid-gap、grid-row-gap和grid-column-gap属性实现了<percentage>(Firefox bug 1266268)。 - 为
align-self、justify-self值baseline和last-baseline(又称“基线自对齐”)实现了网格布局支持 (Firefox bug 1221525)。 - 实现了网格项基线内容对齐 (Firefox bug 1256429)。
- 为
-
我们的实验性 CSS 遮罩实现已得到改进
mask-origin属性现在使用border-box而不是padding-box作为初始值,以匹配规范 (Firefox bug 1258286)。mask-repeat属性现在支持space和round值 (Firefox bug 1258626)。- 修复了阻止
mask-position属性动画的问题 (Firefox bug 1273804)。
-
控制
text-emphasis的首选项已被移除,因此无法再禁用对该属性的支持 (Firefox bug 1229609)。
JavaScript
- 已实现 ES2015
getPrototypeOf()和setPrototypeOf()Proxy陷阱 (Firefox bug 888969)。 - ES2015
RegExp.prototype[Symbol.match]()、RegExp.prototype[Symbol.replace]()、RegExp.prototype[Symbol.search]()和RegExp.prototype[Symbol.split]()方法以及RegExp[Symbol.species]getter 已实现 (Firefox bug 887016)。 - 已删除
String.prototype.match/search/replace的已弃用非标准flags参数 (Firefox bug 1108382)。 Date.parse()方法在解析两位数年份时的行为已更改,以更好地与 Google Chrome 浏览器互操作 (Firefox bug 1265136)。
接口/API/DOM
DOM 和 HTML DOM
- 已添加方法
DOMTokenList.supports()(Firefox bug 1257849)。 - 已添加
DOMTokenList.replace()方法 (Firefox bug 1224186)。 URLSearchParams()构造函数的参数中,前导'?'字符现在被忽略 (Firefox bug 1268361)。- 对于使用
blob:方案的 URL,URL.origin、HTMLAnchorElement.origin和HTMLAreaElement.origin返回的值不再错误地为null,而是通过移除前导blob:形成的 URL 的源 (Firefox bug 1270451)。 - 在预渲染模式下,
Document.visibilityState属性现在返回'prerender'(Firefox bug 1069772)。 - 已实现
Window.isSecureContext属性 (Firefox bug 1162772)。 - DOM4
Element.before、Element.after、Element.replaceWith、Element.append和Element.prepend方法已实现 (Firefox bug 911477)。 TouchList.identifiedTouch()方法已被移除 (Firefox bug 1188539)。- 默认情况下,在调用
Window.open()时,scrollbarsWindow功能是启用的。过去,虽然强烈建议启用它,但它不是默认设置 (Firefox bug 1257887)。 - 添加了实验性和非标准的
HTMLMediaElement.seekToNextFrame()方法,该方法允许逐帧查找视频内容 (Firefox bug 1235301)。虽然鼓励您尝试此方法以帮助我们了解其有用性,但请勿在生产代码中使用它! HTMLLabelElement.form属性现在返回与标签控件关联的表单,如果存在控件(并且该控件与表单关联)。以前,标签是使用此属性直接与表单关联的 (Firefox bug 1268852)。- 已添加对
EventTarget.addEventListener()的第三个参数的支持,该参数可以是Boolean或EventListenerOptions(Firefox bug 1266164 和 Firefox bug 1266066)。 KeyboardEvent.key的音频音量相关值已重命名。"VolumeDown"现在是"AudioVolumeDown","VolumeUp"现在是"AudioVolumeUp","VolumeMute"现在是"AudioVolumeMute"。这使 Firefox 与 UI 事件规范的最新草案保持一致 (Firefox bug 1272578)。有关可用键代码的完整列表,请参阅键盘事件的代码值。- 以前称为
"MozHomeScreen"、"MozCameraFocusAdjust"和"MozPhoneCall"的键现在在 UI Events 规范中具有官方名称:"GoHome"、"CameraFocus"和"Call"。Firefox 49 已更新以使用新名称 (Firefox bug 1272599)。有关可用键代码的完整列表,请参阅键盘事件的代码值。 - 已删除键值
"Separator"和"MediaSkip",因为它们已弃用且未使用 (Firefox bug 1232919)。 - 已添加键值和相应的键代码
"Hyper"和"Super",以表示这些旧版修饰键 (Firefox bug 1232919)。 - 已添加两个多媒体数字键盘键的键值:
"Key11"和"Key12"(Firefox bug 1232919)。 - 已为以下音频控制键添加了新的键值:
"AudioBassBoostToggle"、"AudioTrebleDown"和"AudioTrebleUp"(Firefox bug 123919)。 - 已为这些麦克风控制键添加了键值:
MicrophoneToggle、MicrophoneVolumeDown、MicrophoneVolumeUp和MicrophoneVolumeMute(Firefox bug 123919)。 - 已添加新的键值以支持语音识别设备:
SpeechCorrectionList和SpeechInputToggle(Firefox bug 1232919)。 - 已添加新的键值以支持手机上的特殊按钮:
AppSwitch、Call、CameraFocus、EndCall、GoBack、GoHome、HeadsetHook、LastNumberRedial、Notification、MannerMode和VoiceDial(Firefox bug 1232919)。 - 已添加以下新的应用程序键值:
LaunchContacts和LaunchPhone(Firefox bug 1232919)。 - 已添加新的键值以支持电视设备:
TV3DMode、TVAntennaCable、TVAudioDescription、TVAudioDescriptionMixDown、TVAudioDescriptionMixUp、TVContentsMenu、TVDataService、TVInput、TVInputComponent1、TVInputComponent2、TVInputComposite1、TVInputComposite2、TVInputHDMI1、TVInputHDMI2、TVInputHDMI3、TVInputHDMI4、TVInputVGA1、TVMediaContext、TVNetwork、TVNumberEntry、TVRadioService、TVSatellite、TVSatelliteBS、TVSatelliteCS、TVSatelliteToggle、TVTerrestrialAnalog、TVTerrestrialDigital、TVTimer和DVR(Firefox bug 1232919)。 - 键值
MediaSelect已替换为标准键值LaunchMediaPlayer(Firefox bug 1272592)。 - 还添加了其他媒体播放器键值。它们是
MediaAudioTrack、MediaSkipBackward、MediaSkipForward、MediaStepBackward、MediaStepForward、MediaTopMenu、NavigateIn、NavigateNext、NavigateOut和NavigatePrevious(Firefox bug 1232919)。
Canvas
CanvasRenderingContext2D.filter属性(提供向画布添加过滤器的支持)现在默认激活,不再需要通过首选项启用 (Firefox bug 1173545)。
WebGL
- 已实现
EXT_color_buffer_floatWebGL 2 扩展 (Firefox bug 1129332)。 - 已实现
webglcontextcreationerror事件,该事件在 WebGL 上下文创建尝试失败时发送 (Firefox bug 1271478)。使用此事件有助于了解问题所在,无论是用于调试还是生产错误处理。
IndexedDB
- 您现在可以重命名 IndexedDB 索引;
IDBIndex.name属性不再是只读的 (Firefox bug 1118028)。 - 您现在也可以重命名
IDBObjectStore;IDBObjectStore.name属性不再是只读的 (Firefox bug 1118028)。
Service Workers 及相关
- Fetch API 的
Response对象现在实现了redirected属性,该属性指示响应是否用于已重定向的请求。在使用此属性之前,请查看文档中与安全性相关的注意事项 (Firefox bug 1243792)。 - 在 Permissions API 中,Firefox 不再支持“push”
PermissionDescriptor字典类型(在规范中称为PushPermissionDescriptor);这是因为 Firefox 依赖配额系统来控制userVisibleOnly状态,并且在遇到PushPermissionDescriptor实例时会抛出错误 (Firefox bug 1266821)。删除此字典后,Firefox 现在将忽略它。
媒体流
- 过去,在用户仅拥有音频和视频两种硬件类型中的一种时,请求同时包含音频和视频的
MediaDevices.getUserMedia()调用可能会成功。此问题已修复 (Firefox bug 802326)。 - 在 Firefox 早期版本中,请求同时包含音频和视频的
MediaDevices.getUserMedia()调用可能会成功,即使用户拒绝了其中一个(但不是全部)匹配设备的访问。此问题已修复 (Firefox bug 802326)。这还涉及用户界面的一些细微更改,以便在提示用户权限时移除选择“无音频”或“无视频”的选项。 - 已实现
MediaStream.getTrackById()方法 (Firefox bug 1208390)。
WebRTC
RTCPeerConnection.addTrack()方法已更新,允许将不属于指定流组件的轨道添加到连接中。相反,流用于在连接的接收端对轨道进行分组 (Firefox bug 1271669)。
新 API
PerformanceObserverAPI 现已在 Nightly 中默认激活。在 Firefox 49 的其他版本中默认不可用 (Firefox bug 1271487)。
其他
- 如果首选项
network.http.keep_empty_response_headers_as_empty_string设置为true,XMLHttpRequest.getResponseHeader()和XMLHttpRequest.getAllResponseHeaders()将返回空标头 (Firefox bug 669259)。 - 已移除仅限于 Firefox OS 的 Data Store API (Firefox bug 1261009)。
- 全屏 API 事件处理程序
Document.onfullscreenchange和Document.onfullscreenerror已从Element中移除,因为它们从未在那里触发;但是,这些事件处理程序的带前缀版本已保留在那里以实现兼容性 (Firefox bug 1270386)。请注意,此功能尚未默认激活,但受full-screen-api.unprefix.enabled首选项控制 (Firefox bug 1268749)。 - 已弃用的
Document.mozFullScreen属性已取消前缀,改为Document.fullscreenFirefox bug 1269157。请注意,此功能尚未默认激活,但受full-screen-api.unprefix.enabled首选项控制 (Firefox bug 1268749)。 - 只读属性
Document.fullscreenElement和Document.fullscreenEnabled不再在尝试更改其值时抛出异常;相反,新值被静默忽略,并且 setter 函数是一个空操作 (Firefox bug 1269798)。 - 现在可以使用
DataTransfer.getData()从剪贴板检索任何类型的数据:以前,仅支持某些 MIME 类型的数据 Firefox bug 860857。 - 我们的帧时间 API 实现(由
PerformanceCompositeTiming和PerformanceRenderTiming两个接口组成)已移除,因为规范已完全重写 (Firefox bug 1271846)。 - 为了匹配规范,
VTTCue.positionAlign属性现在返回PositionAlign枚举,而不是Align枚举 (Firefox bug 1276129)。 - Web Speech API 的语音合成部分现在默认激活 (Firefox bug 1268633)。
- 性能时间轴 API 现在在 Nightly 中默认可用(但在 Aurora、Beta 或 Release 版本中不可用)。
- 现在支持 Web Manifests 的
install事件和Window.oninstall事件处理程序 (Firefox bug 1265279)。 - 使用 Web Audio API 的
AudioContext.createPeriodicWave()方法时,您现在可以通过将字典对象作为第三个参数(包含一个参数 —{disableNormalization: true})来指定是否应该归一化生成的周期波 (Firefox bug 1265405)。 - 在 WebVTT API 中,
VTTCue.positionAlign现在根据规范正确返回PositionAlignSetting枚举;以前它返回AlignSetting枚举 (Firefox bug 1276129)。 - Web Speech API 的语音合成部分现在在所有桌面浏览器中默认启用 (Firefox bug 1268633)。
- Web Animations API 的
Animation()构造函数现在接受空时间轴 (Firefox bug 1096776)。 - 如果已启用 Web Animations,
KeyframeEffect属性target现在在 Firefox 中受支持 (Firefox bug 1067769)。
MathML
无更改。
SVG
- 已移除对已弃用的
<altGlyph>、<altGlyphDef>和<altGlyphItem>元素的支持 (Firefox bug 1260032)。
音频/视频
无更改。
插件和 Flash
从 Firefox 49 开始,Firefox 默认阻止某些对于网站正常运行不必要的 Flash 内容。此行为由首选项 browser.safebrowsing.blockedURIs.enabled 控制,有助于提高网站和 Firefox 的整体性能,而不会对网站可用性产生重大影响。它还通过消除导致崩溃的主要原因来提高浏览体验的稳定性。被阻止的 Flash 模块包括几个仅用于指纹识别目的的模块,以及一些“超级 Cookie”模块,未来可能会扩展到包括更多类型的被阻止模块。有关详细信息,请参阅 Firefox bug 1275591。
这标志着迈向无插件未来的下一步。HTML 已经非常接近不再需要插件即可完成工作的程度。
HTTP
- 已实现
Cache-Control: immutable指令 (Firefox bug 1267474)。有关更多信息,另请参阅此博客文章。 - 已实现
require-sri-forContent-Security-Policy(Firefox bug 1265318)。
网络
- 代理自动配置 (PAC) 实现已更新。现在
weekdayRange、dateRange和timeRange支持“反向范围”,例如,weekdayRange("SAT", "MON")将在当前日期是星期六、星期日或星期一 (Firefox bug 1251332) 时评估为true。
安全
- 已实现
Window.isSecureContext属性,该属性指示上下文是否能够使用需要安全上下文的功能 (Firefox bug 1162772)。
兼容性
为了提高与现有内容的兼容性,Firefox 现在接受一些 WebKit 前缀属性和特性。
-
以下属性现在也支持
-webkit前缀-webkit-align-items-webkit-align-content-webkit-align-self-webkit-animation-webkit-animation-delay-webkit-animation-direction-webkit-animation-duration-webkit-animation-fill-mode-webkit-animation-iteration-count-webkit-animation-name-webkit-animation-play-state-webkit-animation-timing-function-webkit-backface-visibility-webkit-background-clip-webkit-background-origin-webkit-background-size-webkit-border-bottom-left-radius-webkit-border-bottom-right-radius-webkit-border-image-webkit-border-top-left-radius-webkit-border-top-right-radius-webkit-border-radius-webkit-box-shadow-webkit-filter-webkit-flex-webkit-flex-basis-webkit-flex-direction-webkit-flex-flow-webkit-flex-grow-webkit-flex-shrink-webkit-flex-wrap-webkit-justify-content-webkit-order-webkit-perspective-webkit-perspective-origin-webkit-text-size-adjust-webkit-transform-webkit-transform-origin-webkit-transform-style-webkit-transition-webkit-transition-delay-webkit-transition-duration-webkit-transition-property-webkit-transition-timing-function-webkit-user-select
-
以下属性映射到等效的带前缀属性
-webkit-box-flex-webkit-box-ordinal-group-webkit-box-orient-webkit-box-align-webkit-box-pack
-
对于
<image>值- 以下函数映射到其无前缀等效项:
-webkit-linear-gradient()、-webkit-radial-gradient()、-webkit-repeating-linear-gradient()和-webkit-repeating-radial-gradient()。 - 支持过时的
-webkit-gradient(并转换为常规渐变)
- 以下函数映射到其无前缀等效项:
-
以下
display值已翻译-webkit-box到-moz-box-webkit-flex到flex-webkit-inline-box到inline-flex-webkit-inline-flex到-moz-inline-flex
-
支持以下属性(不映射到任何无前缀等效项)
-
WebKitCSSMatrix接口是DOMMatrix的别名 -
已实现以下媒体查询功能
-webkit-min-device-pixel-ratio作为具有相同值(以dppx为单位)的min-resolution的别名,但此功能默认禁用(受 about:config 首选项layout.css.prefixes.device-pixel-ratio-webkit控制)-webkit-max-device-pixel-ratio作为具有相同值(以dppx为单位)的max-resolution的别名;此功能也默认禁用,受相同的 about:config 首选项控制。-webkit-transform-3d始终匹配,表示支持 3D 变换。
面向附加组件和 Mozilla 开发者的变更
WebExtensions
- 已添加对
history的支持。这提供了对浏览器历史记录的访问,提供了搜索历史记录、获取以前访问过的页面信息以及添加和删除历史记录条目的方法。 - 向 tabs API 添加了
tabs.removeCSS()方法。此方法允许您移除以前通过调用tabs.insertCSS()注入的 CSS。
接口
- 在
EventTarget.addEventListener()中,值mozSystemGroup(仅在 XBL 或 Firefox chrome 中运行的代码中激活)是一个Boolean值,指示侦听器是否已添加到系统组中。 (Firefox bug 1274520)
其他
无更改。