Firefox 57 (Quantum) for developers 编辑

This article provides information about the changes in Firefox 57 (a.k.a. Firefox Quantum) that will affect developers. Firefox 57 was released on November 14, 2017.

Firefox 57 === Firefox Quantum

Firefox 57 has been given the release name Quantum, after the Firefox Quantum engineering project that has aimed to rebuild Firefox from the ground up, bringing with it major performance, stability, and visual improvements. This is the first version of Firefox to ship some of these improvements, so we wanted to mark the occasion.

Note: To read more about the Quantum features in this release, see Firefox Quantum Developer Edition: the fastest Firefox ever with Photon UI and better tooling by Dan Callahan.

Firefox's new parallel CSS engine — also known as Quantum CSS or Stylo — is enabled by default in Firefox 57 for desktop, with Mobile versions of Firefox to follow later on. Developers shouldn't notice anything significantly different, aside from a whole host of performance improvements. There are however a number of minor functional differences in Stylo, implemented to fix non-standard Gecko behavior that should be eliminated. We will report on such differences on reference pages and in the release notes as appropriate (see Quantum CSS notes).

Changes for Web developers

Developer Tools

No changes.

HTML

CSS

Quantum CSS notes

Following bugs have been fixed in Quantum:

  • Radial gradient values like radial-gradient(circle gold,red) will work in the old Gecko style system, even though they shouldn't because of the missing comma between circle and gold (bug 1383323). 
  • When you animate an offscreen element onscreen but specify a delay, Gecko does not repaint on some platforms, e.g. Windows (bug 1383239). 
  • In Gecko, <details> elements can't be made open by default using the open attribute if they have an animation active on them (bug 1382124).
  • In Gecko, transitions will not work when transitioning from a text-shadow with a color specified to a text-shadow without a color specified  (bug 726550).
  • In Gecko, cancelling a filling animation (e.g. with animation-fill-mode: forwards set) can trigger a transition set on the same element, although only once (see bug 1192592 and these test cases for more information). In general declarative animations should not trigger transitions. 
  • Animations using em units are not affected by changes to the font-size on the animated element's parent in Gecko, whereas they should be (bug 1254424). 
  • Gecko also deals with font-size inheritance differently from Quantum CSS, meaning that for some language settings inherited font sizes end up being smaller than expected (see bug 1391341). 
  • Gecko reuses the same mechanism used when parsing a url-token when parsing the domain() or url-prefix() URL matching functions for a @-moz-document rule. Quantum CSS does not use the same mechanism and it does not consider tokens invalid when they contain brackets or quotes (bug 1362333).
  • In Gecko, when you set a system font as the value of a canvas 2D context's font (e.g. menu), getting the font value fails to return the expected font (it returns nothing). This has been fixed in Quantum. (bug 1374885).
  • In Gecko, when you create a detached subtree (e.g. a <div> created using createElement() that is not yet inserted into the DOM), the subtree's root element is set as a block-level element. In Quantum CSS this is set as inline, as per spec (bug 1374994).
  • In Gecko, calc() expressions are rejected — causing the value to be invalid — when used as the radius component of a radial-gradient() function (bug 1376019).
  • In Gecko, calc(1*2*3) is not parsed successfully; Quantum CSS fixes this (bug 1379467).
  • In Quantum CSS, calc() is supported everywhere that the spec explains it should be (bug 1350857). In Gecko it is not.
  • Gecko has a bug whereby the ::before and ::after pseudo-elements are still generated even if the content property value is set to normal or none. As per spec, they shouldn't be (bug 1387931).
  • Another Gecko bug means that the background-position property can't be transitioned between two values containing different numbers of <position> values, for example background-position: 10px 10px; and background-position: 20px 20px, 30px 30px; (see bug 1390446). 

SVG

No changes.

JavaScript

APIs

New APIs

DOM

DOM events

No changes.

Media and WebRTC

  • Support for messages of arbitrary size (up to 1GiB, although 256kiB is more interoperable) is now supported on RTCDataChannel through use of the end-of-record (EOR) flag on SCTP messages. See Understanding message size limits in Using WebRTC data channels for more information (bug 979417). Because Firefox doesn't yet support the SCTP ndata protocol that provides the ability to interleave SCTP messages from multiple sources, sending large data objects can cause significant delays on all other SCTP traffic. See bug 1381145 to track progress on implementing and deploying ndata support in Firefox..
  • The RTCDataChannel.send() method can now throw a TypeError exception if the size of the message you're trying to send is not compatible with the receiving user agent (this is implemented as part of bug 979417).
  • The MediaStream Recording API has been updated so that error events sent to report problems that occur while recording are now of type MediaRecorderErrorEvent rather than being generic events.
  • Updated the documentation around OfflineAudioContext since its constructor's inputs can now be specified in an object rather than as a list of parameters (bug 1388591).
  • The Web Audio API now properly supports multi-channel output (bug 1378070).

Security

  • resource:// URLs no longer leak information (bug 863246)
  • Data URIs are now treated as unique opaque origins, rather than inheriting the origin of the settings object responsible for the navigation (bug 1324406).

Plugins

No changes.

Other

  • Firefox headless mode now includes a -screenshot flag that allows you to take website screenshots directly from the command line (bug 1378010).

Removals from the web platform

HTML

  • <link rel="preload"> (see Preloading content with rel="preload") has been disabled in Firefox 57 because of various web compatibility issues (e.g. bug 1405761). An improved version that works for non-cacheable resources is expected to land in Firefox 58.

APIs

SVG

No changes.

Changes for add-on and Mozilla developers

Starting in Firefox 57, all support for XPCOM-based add-ons has been removed. All extensions must be converted into the new browser extensions (also known as WebExtensions) or they will not work.

WebExtensions

The following APIs have been added or extended:

See also

Older versions

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

词条统计

浏览:148 次

字数:32528

最后编辑:7 年前

编辑次数:0 次

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文