• Skip to main content
  • Select language
  • Skip to search
MDN Web Docs
  • Technologies
    • HTML
    • CSS
    • JavaScript
    • Graphics
    • HTTP
    • APIs / DOM
    • WebExtensions
    • MathML
  • References & Guides
    • Learn web development
    • Tutorials
    • References
    • Developer Guides
    • Accessibility
    • Game development
    • ...more docs
Firefox
  1. MDN
  2. Mozilla
  3. Firefox
  4. Firefox developer release notes
  5. Firefox 20 for developers

Firefox 20 for developers

In This Article
  1. Changes for Web developers
    1. HTML
    2. JavaScript
    3. CSS
    4. DOM/APIs
    5. SVG
    6. MathML
  2. Changes for add-on and Mozilla developers
  3. See also
    1. Older versions

Firefox 20 was released on 2 Apr 2013. 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 attribute dir 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 2015) 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 2015) 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 new for…of statement (bug 804834).
  • Support for the Map.prototype.keys(), Map.prototype.values(), and Map.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 to true.
  • 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 the layout.css.scope-pseudo.enabled about:config preference to true (bug 648722).

DOM/APIs

  • HTMLMediaElement supports now playbackRate (both read and write), with pitch correction. Pitch correction can be controlled using the property mozPreservesPitch (bug 495040).
  • CSSOM: Support for the new CSSGroupingRule and CSSConditionRule 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 for CSSMediaRule (bug 815021).
  • The DOMParser parseFromStream and parseFromBuffer methods are no longer available from web content (bug 816410).
  • The XMLSerializer serializeToStream method is no longer available from web content (bug 816410).
  • TextDecoder and TextEncoder interfaces are now available in Workers (bug 795542).
  • Support for the CSS.supports() method has been added, behind the layout.css.supports-rule.enabled pref (off by default) (bug 779917).
  • Support for UndoManager has been added (bug 617532).
  • The CSSOM document.caretPositionFromPoint method, which returns a CaretPosition has been implemented.
  • The index argument of the tableRow.insertCell and table.insertRow methods has been made optional as per HTML specification.
  • Navigator.getUserMedia, still prefixed as Navigator.mozGetUserMedia is now activated by default.
  • The third, optional, transfer argument of Window.postMessage is now supported. It allows to transfer a sequence of Transferable 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 Canvas CanvasRenderingContext2D.globalCompositeOperation property (bug 748433).
  • The prefixed version of window.indexedDB — window.mozIndexedDB — was reintroduced to Gecko, so that bad cross-browser prefixing code (such as var indexedDB = window.indexedDB || window.webkitIndexedDB ...) doesn't break in Firefox. A better approach is window.indexedDB = window.indexedDB || window.webkitIndexedDB ... (see bug 770844.)

SVG

  • The implementation of the contentScriptType and contentStyleType properties has been removed from SVGSVGElement 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 and fontsize 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. See nsIDOMParser for alternatives.
  • Content Preferences: The nsIContentPrefService interface is now deprecated and the asynchronous nsIContentPrefService2 storage API has been implemented.
  • The nsIProfile and nsIProfileChangeStatus 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

  • Firefox 20 Release Notes
  • Site Compatibility for Firefox 20
  • Add-on Compatibility for Firefox 20

Older versions

  • Firefox 19 for developers
  • Firefox 18 for developers
  • Firefox 17 for developers
  • Firefox 16 for developers
  • Firefox 15 for developers
  • Firefox 14 for developers
  • Firefox 13 for developers
  • Firefox 12 for developers
  • Firefox 11 for developers
  • Firefox 10 for developers
  • Firefox 9 for developers
  • Firefox 8 for developers
  • Firefox 7 for developers
  • Firefox 6 for developers
  • Firefox 5 for developers
  • Firefox 4 for developers
  • Firefox 3.6 for developers
  • Firefox 3.5 for developers
  • Firefox 3 for developers
  • Firefox 2 for developers
  • Firefox 1.5 for developers

Document Tags and Contributors

Tags: 
  • Firefox
  • Firefox 20
  • Gecko
  • Mozilla
 Contributors to this page: Sebastianz, kdex, chrisdavidmills, teoli, kohei.yoshino, Sheppy, fscholz, trevorh, Timmi, ethertank, DaveG, fbender, evilpie, Luke314, Tomate, myakura, vyv03354, GavinSharp, GPHemsley
 Last updated by: Sebastianz, Feb 7, 2017, 12:59:01 PM
  1. Add-ons
    1. Firefox developer release notes
    2. Add-ons
    3. Add-on guidelines
    4. Add-on Manager
    5. Extensions
    6. OpenSearch plug-ins
    7. Plugins
    8. Themes
  2. Firefox internals
    1. Firefox developer release notes
    2. Mozilla project
    3. Gecko
    4. JavaScript code modules
    5. JS-ctypes
    6. MathML project
    7. MFBT
    8. Mozilla projects
    9. Preference system
    10. WebIDL bindings
    11. XPCOM
    12. XUL
  3. Building and contributing
    1. Build instructions
    2. Configuring build options
    3. How the build system works
    4. Mozilla source code
    5. Localization
    6. Mercurial
    7. Quality assurance
    8. Using Mozilla code in other projects