Firefox 20 was released on . While it has been developed to maintain compatibility as much as possible, the new version includes some changes affecting backward compatibility aimed at improving interoperability with the other browsers or following the latest Web standards. Here's the list of such changes — Hope this helps whenever you test your sites or applications.
This article only explains the changes that may affect backward compatibility for Websites. For the other new features and changes, please read the following documents:
Follow @FxSiteCompat on Twitter for further updates.
The CSS3 Flexible Box has been enabled by default, but still disabled on the Release channel
- Bug 783409 – Turn on CSS flexbox in builds by default (by enabling pref, build flag, etc)
- Bug 841873 – Make flexbox automatically preffed off by default, in release builds
The new Flexible Box (flexbox) implemented in Firefox 18 is now available without having to edit a hidden preference. Note that it's not compatible with the traditional prefixed implementation such as
CSSRule.MOZ_KEYFRAME_RULE(S) constants have been unprefixed
MOZ_KEYFRAMES_RULE constants of
CSSRule have been unprefixed. While those prefixed constants will remain for the meantime, use the unprefixed ones instead from now on.
HTMLElement members are no more available on the whole inheritage chain
Where we used to have all members of the entire inheritance chain (e.g.
EventTarget) on the interface prototype object of the leaf class (e.g.
HTMLDivElement.prototype === document.createElement("div").__proto), we now put the members of
HTMLElement just on
It turns out that at least one important library, Optimizely, relied on this erroneous behavior. They quickly fixed it on their side, but it is important that any Web site using their tool upgrade to the latest versions.
DOMString now convert
"null" instead of the empty string
null to a method that takes a
DOMString argument will stringify to
"null" instead of the empty string. For example,
element.setAttribute("foo", null) will result in an output like
<div foo="null"> instead of
The stream-related methods of
XMLSerializer have gone
parseFromBuffer methods of
DOMParser as well as the
serializeToStream method of
XMLSerializer are now deprecated and no longer available on content. Those still work on chrome (or extension code).
XHR multipart support is now deprecated
Support for the
multipart property and
multipart/x-mixed-replace responses in
XMLHttpRequest has been deprecated. This was a Firefox-only feature that was never standardized, therefore it will be removed from Firefox 22. Server-Sent Events, Web Sockets or inspecting
responseText from progress events can be used instead.
for each...in loop has been virtually removed
While E4X has been deprecated and disabled from Firefox 17, the
for...of statement that are standardizing in ECMAScript 6.
contentScriptType properties have been removed
The implementation of the
contentStyleType properties has been removed from
SVGSVGElement along with the removal from SVG2.