mozilla

Revision 460963 of Site Compatibility for Firefox 25

  • Revision slug: Mozilla/Firefox/Releases/25/Site_Compatibility
  • Revision title: Site Compatibility for Firefox 25
  • Revision id: 460963
  • Created:
  • Creator: dbruant
  • Is current revision? No
  • Comment

Revision Content

{{ draft() }}

Firefox 25 Aurora (pre-Beta) 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:

This list may be updated until the release of the final version on , so please check back later. Follow @FxSiteCompat on Twitter for further updates.

DOM

DocumentTouch has been removed

The {{ domxref("DocumentTouch") }} interface has been removed due to the removal from the spec. The {{ domxref("DocumentTouch.createTouch", "createTouch") }} and {{ domxref("DocumentTouch.createTouchList", "createTouchList") }} methods have been moved to the {{ domxref("Document") }} interface.

GlobalObjectConstructor has been removed

The non-standard GlobalObjectConstructor interface has been removed.

The non-standard ImageDocument interface, as well as the BoxObject, TreeColumn, TreeColumns, TreeContentView, TreeSelection, XULControllers, XULTemplateBuilder and XULTreeBuilder interfaces are no longer available from Web content.

Various interfaces are no longer available on window

The following interfaces, including some non-standard XUL-related classes, are no longer exposed on the {{ domxref("window") }} object: {{ domxref("Contact") }}, {{ domxref("ContactManager") }}, {{ domxref("Counter") }}, {{ domxref("CryptoDialogs") }}, {{ domxref("CSSUnknownRule") }}, {{ domxref("DataErrorEvent") }}, {{ domxref("DocumentXBL") }}, {{ domxref("ElementCSSInlineStyle") }}, {{ domxref("EventListener") }}, {{ domxref("FontFace") }}, {{ domxref("FontFaceList") }}, {{ domxref("GeoGeolocation") }}, {{ domxref("GeoPosition") }}, {{ domxref("GeoPositionCallback") }}, {{ domxref("GeoPositionCoords") }}, {{ domxref("GeoPositionErrorCallback") }}, {{ domxref("GetUserMediaErrorCallback") }}, {{ domxref("GetUserMediaSuccessCallback") }}, {{ domxref("GlobalPropertyInitializer") }}, {{ domxref("HTMLByteRanges") }}, {{ domxref("JSWindow") }}, {{ domxref("LinkStyle") }}, {{ domxref("MediaQueryListListener") }}, {{ domxref("MozAlarmsManager") }}, {{ domxref("MozBrowserFrame") }}, {{ domxref("MozWakeLockListener") }}, {{ domxref("NSEditableElement") }}, {{ domxref("NSEvent") }}, {{ domxref("NSXPathExpression") }}, {{ domxref("Parser") }}, {{ domxref("PermissionSettings") }}, {{ domxref("Pkcs11") }}, {{ domxref("PushManager") }}, {{ domxref("RequestService") }}, {{ domxref("Serializer") }}, {{ domxref("StorageIndexedDB") }}, {{ domxref("StorageManager") }}, {{ domxref("ToString") }}, {{ domxref("WindowCollection") }}, {{ domxref("WindowInternal") }}, {{ domxref("WindowPerformance") }}, XULContainerElement, XULContainerItemElement, XULDescriptionElement, XULImageElement, XULLabelElement, XULMenuListElement, XULMultiSelectControlElement, XULRelatedElement, XULSelectControlElement, XULSelectControlItemElement, XULTextBoxElement and XULTreeElement.

Events in workers have been prefixed with Worker

In order to make normal DOM events work in Web workers, the current events in workers including {{ domxref("Event") }}, {{ domxref("MessageEvent") }}, {{ domxref("ErrorEvent") }} and {{ domxref("ProgressEvent") }} have been renamed to WorkerEvent, WorkerMessageEvent, WorkerErrorEvent and WorkerProgressEvent. This change is temporary. Once the Firefox back-end implementation is fixed, those events will be unprefixed again.

The Geolocation API implementation has been updated to comply with the spec. If the feature is not available, {{ domxref("window.navigator.geolocation") }} will return undefined instead of null, and "geolocation" in navigator will be false instead of true previously.

The following constants on the {{ domxref("IDBRequest") }}, {{ domxref("IDBTransaction") }} and {{ domxref("IDBCursor") }} interfaces have been removed due to the removal from the spec: IDBRequest.LOADING, IDBRequest.DONE, IDBTransaction.READ_ONLY, IDBTransaction.READ_WRITE, IDBTransaction.VERSION_CHANGE, IDBCursor.NEXT, IDBCursor.NEXT_NO_DUPLICATE, IDBCursor.PREV and IDBCursor.PREV_NO_DUPLICATE.

JavaScript

ES6 array methods have been added

As part of ECMAScript 6 support, the Array.find, Array.findIndex and Array.of methods have been added. Array.from will also be added soon. This may break some JavaScript libraries which are extending Array.prototype with their own methods. For now, at least one library, Sugar, is known to be affected.

Proxy has been changed to be a function

The Proxy interface has been changed from an object to a function, and now it's callable without the new operator. You may have to care about this if you are using the typeof operator for a feature detection, as typeof Proxy returns "function".

yield without a value has been deprecated

The yield operator now cannot be used without an operand (its value). This change has been made to comply with the ECMAScript 6 spec, and you'll see a warning in the Web Console if no value is specified in your code.

Event Handling

preventDefault on keydown now cancels keypress

Previously, calling {{ domxref("event.preventDefault", "preventDefault") }} on a {{ event("keydown") }} event didn't cancel the following {{ event("keypress") }} event. It has been fixed to match the DOM Level 3 Events (D3E) spec as well as the behavior of other browsers.

Video/Audio

HTMLVideoElement.videoPlaybackQuality has been changed to a method

The videoPlaybackQuality attribute on the {{ domxref("HTMLVideoElement") }} interface has been changed to the getVideoPlaybackQuality method to follow the latest spec.

Revision Source

<p>{{ draft() }}</p>
<p>Firefox&nbsp;25 <a href="http://www.mozilla.org/en-US/firefox/aurora/">Aurora</a> (pre-Beta) was released on <time datetime="2013-08-09">August&nbsp;9, 2013</time>. 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.</p>
<p><strong>This article only explains the changes that may affect backward compatibility for Websites</strong>. For the other new features and changes, please read the following documents:</p>
<ul>
  <li><a href="http://www.mozilla.org/en-US/firefox/25.0a2/auroranotes/">Firefox&nbsp;25 Aurora Release Notes</a></li>
  <li><a href="/en-US/docs/Mozilla/Firefox/Releases/25">Firefox&nbsp;25 for developers</a></li>
</ul>
<p>This list may be updated until the release of the final version on <time datetime="2013-10-29">October&nbsp;29, 2013</time>, so please check back later. Follow <a href="https://twitter.com/FxSiteCompat">@FxSiteCompat</a> on Twitter for further updates.</p>
<section id="sect1">
  <h2 id="DOM">DOM</h2>
  <section id="sect3">
    <h3 id="DocumentTouch_has_been_removed"><code>DocumentTouch</code> has been removed</h3>
    <ul>
      <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=897211">Bug&nbsp;897211 – Remove nsIDOMDocumentTouch</a></li>
    </ul>
    <p>The {{ domxref("DocumentTouch") }} interface has been removed due to the removal from the spec. The {{ domxref("DocumentTouch.createTouch", "createTouch") }} and {{ domxref("DocumentTouch.createTouchList", "createTouchList") }} methods have been moved to the {{ domxref("Document") }} interface.</p>
  </section>
  <section id="sect5">
    <h3 id="GlobalObjectConstructor_has_been_removed"><code>GlobalObjectConstructor</code> has been removed</h3>
    <ul>
      <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=898136">Bug&nbsp;898136 – Remove nsIDOMGlobalObjectConstructor</a></li>
    </ul>
    <p>The non-standard <code>GlobalObjectConstructor</code> interface has been removed.</p>
  </section>
  <section id="sect6">
    <h3 id="ImageDocument_and_some_XUL-related_classes_have_been_removed"><code>ImageDocument</code> and some XUL-related classes have been removed</h3>
    <ul>
      <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=885177">Bug&nbsp;885177 – Make window.ImageDocument ChromeOnly</a></li>
      <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=898687">Bug&nbsp;898687 – Remove XULTreeBuilder from content</a></li>
    </ul>
    <p>The non-standard <code>ImageDocument</code> interface, as well as the <code>BoxObject</code>, <code>TreeColumn</code>, <code>TreeColumns</code>, <code>TreeContentView</code>, <code>TreeSelection</code>, <code>XULControllers</code>, <code>XULTemplateBuilder</code> and <code>XULTreeBuilder</code> interfaces are no longer available from Web content.</p>
  </section>
  <section id="sect13">
    <h3 id="Various_interfaces_are_no_longer_available_on_window">Various interfaces are no longer available on <code>window</code></h3>
    <ul>
      <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=898817">Bug&nbsp;898817 – Stop exposing nsIDOM* interfaces on the global automatically</a></li>
    </ul>
    <p>The following interfaces, including some non-standard <a href="/en-US/docs/XUL">XUL</a>-related classes, are no longer exposed on the {{ domxref("window") }} object: {{ domxref("Contact") }}, {{ domxref("ContactManager") }}, {{ domxref("Counter") }}, {{ domxref("CryptoDialogs") }}, {{ domxref("CSSUnknownRule") }}, {{ domxref("DataErrorEvent") }}, {{ domxref("DocumentXBL") }}, {{ domxref("ElementCSSInlineStyle") }}, {{ domxref("EventListener") }}, {{ domxref("FontFace") }}, {{ domxref("FontFaceList") }}, {{ domxref("GeoGeolocation") }}, {{ domxref("GeoPosition") }}, {{ domxref("GeoPositionCallback") }}, {{ domxref("GeoPositionCoords") }}, {{ domxref("GeoPositionErrorCallback") }}, {{ domxref("GetUserMediaErrorCallback") }}, {{ domxref("GetUserMediaSuccessCallback") }}, {{ domxref("GlobalPropertyInitializer") }}, {{ domxref("HTMLByteRanges") }}, {{ domxref("JSWindow") }}, {{ domxref("LinkStyle") }}, {{ domxref("MediaQueryListListener") }}, {{ domxref("MozAlarmsManager") }}, {{ domxref("MozBrowserFrame") }}, {{ domxref("MozWakeLockListener") }}, {{ domxref("NSEditableElement") }}, {{ domxref("NSEvent") }}, {{ domxref("NSXPathExpression") }}, {{ domxref("Parser") }}, {{ domxref("PermissionSettings") }}, {{ domxref("Pkcs11") }}, {{ domxref("PushManager") }}, {{ domxref("RequestService") }}, {{ domxref("Serializer") }}, {{ domxref("StorageIndexedDB") }}, {{ domxref("StorageManager") }}, {{ domxref("ToString") }}, {{ domxref("WindowCollection") }}, {{ domxref("WindowInternal") }}, {{ domxref("WindowPerformance") }}, <code>XULContainerElement</code>, <code>XULContainerItemElement</code>, <code>XULDescriptionElement</code>, <code>XULImageElement</code>, <code>XULLabelElement</code>, <code>XULMenuListElement</code>, <code>XULMultiSelectControlElement</code>, <code>XULRelatedElement</code>, <code>XULSelectControlElement</code>, <code>XULSelectControlItemElement</code>, <code>XULTextBoxElement</code> and <code>XULTreeElement</code>.</p>
  </section>
  <section id="sect16">
    <h3 id="Events_in_workers_have_been_prefixed_with_Worker">Events in workers have been prefixed with <code>Worker</code></h3>
    <ul>
      <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=887236">Bug&nbsp;887236 – prefix the current events in workers with "Worker"</a></li>
    </ul>
    <p>In order to make <a href="/en-US/docs/Web/Reference/Events">normal DOM events</a> work in <a href="/en-US/docs/Web/Guide/Performance/Using_web_workers">Web workers</a>, the current events in workers including {{ domxref("Event") }}, {{ domxref("MessageEvent") }}, {{ domxref("ErrorEvent") }} and {{ domxref("ProgressEvent") }} have been renamed to <code>WorkerEvent</code>, <code>WorkerMessageEvent</code>, <code>WorkerErrorEvent</code> and <code>WorkerProgressEvent</code>. This change is <strong>temporary</strong>. Once the Firefox back-end implementation is fixed, those events will be unprefixed again.</p>
  </section>
  <section id="sect19">
    <h3 id="navigator.geolocation_now_returns_undefined_if_the_API_is_disabled">The&nbsp;<code>geolocation</code> property of the<code> navigator</code> object is absent if the API is disabled</h3>
    <ul>
      <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=884921">Bug&nbsp;884921 – Align navigator.geolocation with spec</a></li>
    </ul>
    <p>The <a href="/en-US/docs/WebAPI/Using_geolocation">Geolocation API</a> implementation has been updated to comply with the spec. If the feature is not available, {{ domxref("window.navigator.geolocation") }} will return <code>undefined</code> instead of <code>null</code>, and <code>"geolocation" in navigator</code> will be <code>false</code> instead of <code>true</code> previously.</p>
  </section>
  <section id="sect23">
    <h3 id="Constants_of_some_IndexedDB-related_interfaces_have_been_removed">Constants of some IndexedDB-related interfaces have been removed</h3>
    <ul>
      <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=887524">Bug&nbsp;887524 – Move IDBRequest to WebIDL</a></li>
      <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=888598">Bug&nbsp;888598 – Move IDBTransaction to WebIDL</a></li>
      <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=891944">Bug&nbsp;891944 – Move IDBCursor to WebIDL</a></li>
    </ul>
    <p>The following constants on the {{ domxref("IDBRequest") }}, {{ domxref("IDBTransaction") }} and {{ domxref("IDBCursor") }} interfaces have been removed due to the removal from the spec: <code>IDBRequest.LOADING</code>, <code>IDBRequest.DONE</code>, <code>IDBTransaction.READ_ONLY</code>, <code>IDBTransaction.READ_WRITE</code>, <code>IDBTransaction.VERSION_CHANGE</code>, <code>IDBCursor.NEXT</code>, <code>IDBCursor.NEXT_NO_DUPLICATE</code>, <code>IDBCursor.PREV</code> and <code>IDBCursor.PREV_NO_DUPLICATE</code>.</p>
  </section>
</section>
<section id="sect24">
  <h2 id="JavaScript">JavaScript</h2>
  <section id="sect25">
    <h3 id="ES6_array_methods_have_been_added">ES6 array methods have been added</h3>
    <ul>
      <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=885553">Bug&nbsp;885553 – Implement ES6 Array.prototype.find and Array.prototype.findIndex</a></li>
      <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=866849">Bug&nbsp;866849 – Implement ES6 Array.from and Array.of</a></li>
    </ul>
    <p>As part of <a href="/en-US/docs/Web/JavaScript/ECMAScript_6_support_in_Mozilla">ECMAScript&nbsp;6 support</a>, the <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find"><code>Array.find</code></a>, <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex"><code>Array.findIndex</code></a> and <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/of"><code>Array.of</code></a> methods have been added. <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from"><code>Array.from</code></a> will also be added soon. This may break some JavaScript libraries which are extending <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype"><code>Array.prototype</code></a> with their own methods. For now, at least one library, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=903755">Sugar</a>, is known to be affected.</p>
  </section>
  <section id="sect26">
    <h3 id="Proxy_has_been_changed_to_be_a_function"><code>Proxy</code> has been changed to be a function</h3>
    <ul>
      <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=788172">Bug&nbsp;788172 – Proxy is not a function (typeof Proxy should be 'function')</a></li>
    </ul>
    <p>The <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy"><code>Proxy</code></a> interface has been changed from an object to a function, and now it's callable without the <a href="/en-US/docs/Web/JavaScript/Reference/Operators/new"><code>new</code></a> operator. You may have to care about this if you are using the <a href="/en-US/docs/Web/JavaScript/Reference/Operators/typeof"><code>typeof</code></a> operator for a feature detection, as <code>typeof Proxy</code> returns <code>"function"</code>.</p>
  </section>
  <section id="sect27">
    <h3 id="yield_without_a_value_has_been_deprecated"><code>yield</code> without a value has been deprecated</h3>
    <ul>
      <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=885463">Bug&nbsp;885463 – Warn about 'yield' without operand</a></li>
    </ul>
    <p>The <a href="/en-US/docs/Web/JavaScript/Reference/Operators/yield"><code>yield</code></a> operator now cannot be used without an operand (its value). This change has been made to comply with the <a href="/en-US/docs/JavaScript/ECMAScript_6_support_in_Mozilla">ECMAScript&nbsp;6</a> spec, and you'll see a warning in the <a href="/en-US/docs/Tools/Web_Console">Web Console</a> if no value is specified in your code.</p>
  </section>
</section>
<section id="sect28">
  <h2 id="Event_Handling">Event Handling</h2>
  <section id="sect29">
    <h3 id="preventDefault_on_keydown_now_cancels_keypress"><code>preventDefault</code> on <code>keydown</code> now cancels <code>keypress</code></h3>
    <ul>
      <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=501496">Bug&nbsp;501496 – preventDefault on keydown does not cancel following keypress</a></li>
    </ul>
    <p>Previously, calling {{ domxref("event.preventDefault", "preventDefault") }} on a {{ event("keydown") }} event didn't cancel the following {{ event("keypress") }} event. It has been fixed to match the DOM Level&nbsp;3 Events (D3E) spec as well as the behavior of other browsers.</p>
  </section>
</section>
<section id="sect30">
  <h2 id="Video.2FAudio">Video/Audio</h2>
  <section id="sect31">
    <h3 id="HTMLVideoElement.videoPlaybackQuality_has_been_changed_to_a_method"><code>HTMLVideoElement.videoPlaybackQuality</code> has been changed to a method</h3>
    <ul>
      <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=889205">Bug&nbsp;889205 – Make HTMLVideoElement.videoPlaybackQuality a method</a></li>
    </ul>
    <p>The <code>videoPlaybackQuality</code> attribute on the {{ domxref("HTMLVideoElement") }} interface has been changed to the <code>getVideoPlaybackQuality</code> method to follow the latest spec.</p>
  </section>
</section>
Revert to this revision