Firefox 23 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 blink effect with
text-decoration:blink has been dropped
- Bug 857820 – Drop only blink effect from text-decoration: blink; and completely remove <blink> element
Firefox previously supported the Netscape-derived blink effect with the
blink keyword for the CSS
text-decoration property as well as the HTML
<blink> element and the DOM
String.blink method. Starting with Firefox 23, the blink effect no longer works. While
text-decoration:blink continues to be supported by the CSS parser and the DOM APIs, the HTML parser has dropped the
<blink> element support, thus the element will be treated as an unknown element. Internet Explorer, Chrome and Safari haven't supported the effect. Opera may also drop the support once it switches to the Blink rendering engine.
The ability to add a sidebar panel has been dropped
window.sidebar.addPersistentPanel are no longer supported. These methods were a part of a Netscape-derived API which allowed Web publishers to integrate their contents as sidebar panels of the browser. They were not standardized, rarely used, and not very well supported. No other browsers have implemented these.
As alternatives to those API, you can create a sidebar extension or utilize the Social API.
cancelAnimationFrame have been unprefixed
- Bug 704063 – Add unprefixed requestAnimationFrame
- Bug 876282 – Add unprefixed cancelAnimationFrame
- Bug 753453 – requestAnimationFrame callback should return DOMHighResTimeStamp
requestAnimationFrame, the unprefixed version of
mozRequestAnimationFrame, has been added. This unprefixed method passes a
DOMHighResTimeStamp to callbacks. It has microsecond precision and can be compared to
On the other hand, the prefixed method, which will be removed in the future, continues to pass an epoch-based
DOMTimeStamp to callbacks. The passed-in value has millisecond precision and can be compared to
cancelAnimationFrame method has also been added. It has the same behavior as the prefixed
mozCancelAnimationFrame method. Those
moz-prefixed methods will be removed in the future.
- Bug 829872 – Consider returning null from contentDocument getters when the caller does not subsume the document
contentDocument property on frames now returns
null if the caller doesn't subsume the document. This change affects the
contentDocument property on the
<object> elements as well as the
getSVGDocument method on the
window.defaultStatus has been removed
window.defaultStatus property is no longer available. Setting this property has had no effect in Firefox because the default preference has disallowed changes to the status text by Web pages. Recently, the Firefox UI dropped support for enabling that pref. Also, this property is not specified in the HTML5 spec.
window.status is still available.
The creation of
Document.createEvent() is no longer allowed
- Bug 868751 – Remove support for document.createEvent("AnimationEvent"), document.createEvent("TransitionEvent"), AnimationEvent.initAnimationEvent, and TransitionEvent.initTransitionEvent
The support for obsolete
TransitionEvent.initTransitionEvent has been removed. Only the standard constructors,
TransitionEvent() are now allowed.
watch() throws a
TypeError on some interfaces
Since Firefox 23, the non-standard
watch method, which allows developers to observe changes made to object properties, throws a
TypeError if the object is
HTMLSelectElement or probably some other DOM element interfaces. A workaround is to use a
Proxy. Note that
unwatch may be removed in the future, and you should avoid using those Firefox-specific methods. This regression has been fixed with Firefox 27.
Video & Audio
HTMLMediaElement.initialTime has been removed
initialTime property is no longer available, due to the removal from the spec.
Security & Privacy
Non-SSL active content on SSL pages is blocked by default
Firefox 18 introduced preferences to block loading content from non-SSL (
http) sites on SSL (
https) pages. One of those preferences,
security.mixed_content.block_active_content is now enabled by default in order to enhance user security. That means insecure scripts, stylesheets, plug-in contents,
XMLHttpRequest, Web fonts (
@font-face) and WebSockets are blocked on secure pages, and a notification is displayed instead. It will not block "display content" like images, videos or audio. See Tanvi Vyas' blog post for details.
The CSP implementation has been updated for the final spec
- Bug 746978 – sync CSP directive parsing and directive names with w3c CSP 1.0 spec
- Bug 783049 – CSP : use existing/old parser for X-Content-Security-Policy header, new/CSP 1.0 spec compliant parser for Content-Security-Policy header
- Bug 842657 – Flip the pref to enable the CSP 1.0 parser for Firefox
Content Security Policy (CSP) 1.0 spec has been implemented. The existing parser will be used when a policy is served via the
X-Content-Security-Policy header, and the new parser that follows the 1.0 spec will be used when a policy is served via the officially spec'd
Content-Security-Policy header. See the post on the Mozilla Security Blog for details. Consult the latest spec if you'd like to implement CSP on your site. The documents on MDN will be updated sometime soon.