Firefox 20 was released on . This article provides information about the changes in this release that will affect developers.
Changes for Web developers
HTML
- Support for the
download
attribute on the<a>
and<area>
element has been added (bug 676619). - The value
auto
for the global attributedir
has been implemented (bug 548206). - The global attribute contextmenu now works on Firefox for Android (bug 736321).
JavaScript
- Support for the
Weakmap.prototype.clear()
method, recently added to the Harmony (EcmaScript 6) draft proposal has been added (bug 814562). - Support for the
Math.imul()
method, a C-style 32-bit multiplication function. Though proposed for Harmony (EcmaScript 6) it has not yet accepted and still is non-standard (bug 808148). - Web apps using draggable text with Kinetic 3.x are working, even when using the Cairo canvas backend (bug 835064).
- The
for each…in
statement has been deprecated and should not be used. Consider using the newfor…of
statement (bug 804834). - Support for the
Map.prototype.keys()
,Map.prototype.values()
, andMap.prototype.entries()
has been added (bug 817368).
CSS
- CSS Flexbox is now available by default in pre-release builds only (excluding beta versions). It can be enabled in release and beta version by setting the
layout.css.flexbox.enabled
about:config preference totrue
. - The
mask-type
property from the CSS Masking specification has been added (bug 793617). - Experimental support for the
:scope
pseudo-class has been added. Enabled by default in Aurora and Nightly, it can be enabled in release and beta version by setting thelayout.css.scope-pseudo.enabled
about:config preference totrue
(bug 648722).
DOM/APIs
HTMLMediaElement
supports nowplaybackRate
(both read and write), with pitch correction. Pitch correction can be controlled using the propertymozPreservesPitch
(bug 495040).- CSSOM: Support for the new
CSSGroupingRule
andCSSConditionRule
has been added (bug 814907). - CSSOM: On
CSSRule
the constant CSSRule.MOZ_KEYFRAME_RULE and CSSRule.MOZ_KEYFRAMES_RULE have been unprefixed to CSSRule.KEYFRAME_RULE and CSSRule.KEYFRAMES_RULE. The prefixed version are temporarily kept for helping Web author to transition their code bug 816431). - CSSOM: It is now possible to set the value of
conditionText
forCSSMediaRule
(bug 815021). - The
DOMParser
parseFromStream
andparseFromBuffer
methods are no longer available from web content (bug 816410). - The
XMLSerializer
serializeToStream
method is no longer available from web content (bug 816410). TextDecoder
andTextEncoder
interfaces are now available in Workers (bug 795542).- Support for the
CSS.supports()
method has been added, behind the
pref (off by default) (bug 779917).layout.css.supports-rule.enabled
- Support for UndoManager has been added (bug 617532).
- The CSSOM
document.caretPositionFromPoint
method, which returns aCaretPosition
has been implemented. - The index argument of the
tableRow.insertCell
andtable.insertRow
methods has been made optional as per HTML specification. Navigator.getUserMedia
, still prefixed asNavigator.mozGetUserMedia
is now activated by default.- The third, optional,
transfer
argument ofWindow.postMessage
is now supported. It allows to transfer a sequence ofTransferable
objects to the destination (bug 822094). - The non-standard
Window.sizeToContent()
method now clamps the minimal size: the window cannot be forced anymore to small sizes preventing the user to interact with (bug 764240). - Blend modes, such as
overlay
,color-burn
,hue
, etc. have been added to the CanvasCanvasRenderingContext2D.globalCompositeOperation
property (bug 748433). - The prefixed version of
window.indexedDB
—window.mozIndexedDB
— was reintroduced to Gecko, so that bad cross-browser prefixing code (such asvar indexedDB = window.indexedDB || window.webkitIndexedDB ...
) doesn't break in Firefox. A better approach iswindow.indexedDB = window.indexedDB || window.webkitIndexedDB ...
(see bug 770844.)
SVG
- The implementation of the
contentScriptType
andcontentStyleType
properties has been removed fromSVGSVGElement
along with the removal from SVG2 (bug 819731).
MathML
- To help MathML authors debugging "invalid-markup" errors in their documents, MathML parsing errors (such as having too many / too few child elements) and warnings about deprecated attributes or wrong attribute values are now reported to the Error Console.
- The
scriptminsize
attribute now accepts unitless values and percent values. They are interpreted as multiples of the default value ("8pt
"). - Unitless values are now also allowed for the
mathsize
andfontsize
attributes; they multiply the default value.
Changes for add-on and Mozilla developers
- ECMAScript for XML (E4X) is now fully disabled for all chrome and content scripts. It was previously disabled for content in Firefox 17 and has been removed entirely for Firefox 21. Use DOMParser/DOMSerializer or a non-native JXON algorithm instead.
- The
nsIDOMParserJS
interface no longer exists bug 816410. SeensIDOMParser
for alternatives. - Content Preferences: The
nsIContentPrefService
interface is now deprecated and the asynchronousnsIContentPrefService2
storage API has been implemented. - The
nsIProfile
andnsIProfileChangeStatus
interfaces have been removed, along with other code supporting the pre-Firefox profile management system. You probably weren't using these interfaces, but if you were, you should stop doing so. This prevents defunct parts of the profile management system from vetoing the shutdown process. - The
nsIEventSource
interface no longer exists bug 819639.
See also
Older versions
- Firefox 50 for developers
- Firefox 49 for developers
- Firefox 48 for developers
- Firefox 47 for developers
- Firefox 46 for developers
- Firefox 45 for developers
- Firefox 44 for developers
- Firefox 43 for developers
- Firefox 42 for developers
- Firefox 41 for developers
- Firefox 40 for developers
- Firefox 39 for developers
- Firefox 38 for developers
- Firefox 37 for developers
- Firefox 36 for developers
- Firefox 35 for developers
- Firefox 34 for developers
- Firefox 33 for developers
- Firefox 32 for developers
- Firefox 31 for developers
- Firefox 30 for developers
- Firefox 29 for developers
- Firefox 28 for developers
- Firefox 27 for developers
- Firefox 26 for developers
- Firefox 25 for developers
- Firefox 24 for developers
- Firefox 23 for developers
- Firefox 22 for developers
- Firefox 21 for developers
- Firefox 20 for developers
Document Tags and Contributors
Tags:
Contributors to this page:
chrisdavidmills,
teoli,
kohei.yoshino,
Sheppy,
fscholz,
trevorh,
Timmi,
ethertank,
DaveG,
fbender,
evilpie,
Luke314,
Tomate,
myakura,
vyv03354,
GavinSharp,
GPHemsley
Last updated by:
chrisdavidmills,