Site Compatibility for Firefox 28

Firefox 28 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.

DOM

showModalDialog has been deprecated

The window.showModalDialog method, originally from Internet Explorer, is now considered deprecated. The window.open method should be used instead.

Make sure the deep argument is specified for cloneNode and importNode

The Node.cloneNode and document.importNode methods take the boolean deep argument. It's optional in the DOM4 specification, and if omitted, these methods acted as if the value of deep was true. But this behavior has been changed in the latest spec, and if omitted, the methods will act as if the value was false. The implementation has been changed in Firefox 29. Though the argument is still optional, Firefox now warns developers in console not to omit the argument for the backward and forward compatibility.

History objects now throw if the document is inactive

The spec of the History interface has been updated, and the properties and methods now throw a SecurityError exception when those are called on an inactive document. It would be a problem if you are manipulating window.history in an <iframe>.

The MozBeforeResize event has been removed

The support for the non-standard, obscure MozBeforeResize event has been removed.

Regression: Plug-in MIME types are written in lower-case

In Firefox 28, MIME types exposed in the document.plugins, window.navigator.plugins and window.navigator.mimeTypes properties are designated by lower-case letters, instead of the original mixed-case or upper-case type. This has been considered as a regression and fixed in Firefox 29. A workaround: use the String.toLowerCase method when you try to find a specific MIME type.

JavaScript

Array.keys and Array.entries have been implemented

As part of ECMAScript 6 support, the Array.keys and Array.entries methods have been added. This may break some JavaScript libraries which are extending Array.prototype with their own methods. Regressions have been found at least in 2 apps, and the dagre-d3 JavaScript library affecting one of them was fixed during the Aurora development cycle.

Networking

SPDY/2 support has been dropped

The support of SPDY Protocol Draft 2 has been removed. Web sites should upgrade to SPDY/3 or later.

Video/Audio

canPlayType('video/webm') now returns 'maybe'

The canPlayType method of the HTMLMediaElement interface has been updated to comply with the spec. canPlayType('video/webm') and canPlayType('audio/webm') now return 'maybe' instead of 'probably', because media can be encoded with a codec that Firefox doesn't support. If a codec is specified in the type argument, the method returns 'probably' or '' (empty string) depending on the codec. For example, canPlayType('video/webm; codecs=vp8') returns 'probably'.

Audio Data API has been disabled

The experimental, non-standard Audio Data API, which has been deprecated since Firefox 22, is now disabled behind the preference media.audio_data.enabled. The API will be removed from Firefox 31. The standardized Web Audio API can be used instead.

Document Tags and Contributors

Contributors to this page: kohei.yoshino, azoorob, cpeterson
Last updated by: kohei.yoshino,