mozilla

Revision 520621 of Site Compatibility for Firefox 29

  • Revision slug: Mozilla/Firefox/Releases/29/Site_Compatibility
  • Revision title: Site Compatibility for Firefox 29
  • Revision id: 520621
  • Created:
  • Creator: kohei.yoshino
  • Is current revision? No
  • Comment

Revision Content

{{ draft() }}

Firefox 29 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 @MozWebCompat on Twitter for further updates.

HTML

Obsolete features have been dropped from <pre>

The cols and width attributes of the {{ HTMLElement("pre") }} element are no longer supported in Firefox. The former attribute was a non-standard extension derived from Netscape Navigator, the latter was in the HTML4 spec but removed from HTML5.

CSS

box-sizing has been unprefixed

The {{ cssxref("box-sizing") }} property has been unprefixed. While -moz-box-sizing will be left for a reasonable period of time, developers are encouraged to use the unprefixed property instead.

DOM

cloneNode and importNode has defaulted to shallow clones

The {{ domxref("Node.cloneNode") }} and {{ domxref("document.importNode") }} methods take the boolean deep argument. It was 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. This means a shallow clone is now default instead of a deep clone. Firefox 28 warned developers in console not to omit the argument for the forward compatibility.

The {{ domxref("PluginArray") }} interface, returned by the {{ domxref("window.navigator.plugins") }} property, has been restricted so enumeration does not return all installed plug-in names. This change is intended to enhance user privacy by reducing the effectiveness of specific fingerprinting techniques. This privacy change does not disable any plug-ins; it just hides some plug-in names from enumeration. Web sites that must check for the presence of a browser plug-in should query navigator.plugins or {{ domxref("window.navigator.mimeTypes") }} by exact name instead of enumerating all plug-in or MIME type names. This change was originally planned for Firefox 28. Mozilla is tracking some affected sites.

HTMLIFrameElement.sandbox now returns a DOMSettableTokenList

Previously, the sandbox property of the {{ domxref("HTMLIFrameElement") }} interface (the {{ HTMLElement("iframe") }} element) returned a string value like allow-same-origin. This type has been changed to {{ domxref("DOMSettableTokenList") }} to meet the latest spec. sandbox.value returns a string notation as before.

_content, pkcs11 and LoadStatus have been removed from window

As part of the ongoing effort to standardize global objects, some properties have been removed from {{ domxref("window") }}. The _content property is no longer available from Web content in favor of {{ domxref("window.content") }}. The {{ domxref("window.pkcs11") }} has returned null since Firefox 3.0.14 for security reasons. The non-standard LoadStatus interface is also no longer available on window.

Attr.ownerElement has been removed

The ownerElement property on the {{ domxref("Attr") }} interface has been deprecated since Firefox 7 and removed from Firefox 29.

JavaScript

Generator now returns an IteratorResult instead of throwing

The ECMAScript 6 compliant syntax for Generators (yield) has been introduced with Firefox 26. The implementation has been updated for the latest spec, and a completed generator function now returns an IteratorResult object like { value: undefined, done: true } instead of throwing a TypeError. This behavior matches the iterator of the Array, Map and Set interfaces, that the implementation has been updated with Firefox 27.

WebGL

moz-webgl context requests are no longer supported

The support for retrieving a WebGL context from a Canvas using the obsolete moz-webgl name has been removed. Use the standard webgl context instead as described in Getting started with WebGL.

Miscellaneous

A minimum width has been set for the browser window

To avoid a potential UI clipping issue with the new Australis theme introduced with Firefox 29, a minimum width has been set for the Firefox desktop browser window. This size is 425px on OS X and 390px on other platforms. If you were resizing the window to test your mobile site, the convenient Responsive Design View can be used instead. The minimum width is not applied to pop-up windows, so this shouldn't affect content display.

Revision Source

<p>{{ draft() }}</p>
<p>Firefox&nbsp;29 <a href="http://www.mozilla.org/en-US/firefox/aurora/">Aurora</a> (pre-Beta) was released on <time datetime="2014-02-07">February&nbsp;7, 2014</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/29.0a2/auroranotes/">Firefox&nbsp;29 Aurora Release Notes</a></li>
 <li><a href="/en-US/docs/Mozilla/Firefox/Releases/29">Firefox&nbsp;29 for developers</a></li>
</ul>
<p>This list may be updated until the release of the final version on <time datetime="2014-04-29">April&nbsp;29, 2014</time>, so please check back later. Follow <a href="https://twitter.com/MozWebCompat">@MozWebCompat</a> on Twitter for further updates.</p>
<section id="sect1">
 <h2 id="HTML">HTML</h2>
 <section id="sect2">
  <h3 id="Obsolete_features_have_been_dropped_from_&lt;pre&gt;">Obsolete features have been dropped from <code>&lt;pre&gt;</code></h3>
  <ul>
   <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=949879">Bug&nbsp;949879 – Drop support for &lt;pre cols&gt;</a></li>
   <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=950737">Bug&nbsp;950737 – Remove layout effect from &lt;pre width&gt;</a></li>
  </ul>
  <p>The <code>cols</code> and <code>width</code> attributes of the {{ HTMLElement("pre") }} element are no longer supported in Firefox. The former attribute was a non-standard extension derived from Netscape Navigator, the latter was in the HTML4 spec but removed from <a href="/en-US/docs/Web/Guide/HTML/HTML5">HTML5</a>.</p>
 </section>
</section>
<section id="sect3">
 <h2 id="CSS">CSS</h2>
 <section id="sect4">
  <h3 id="box-sizing_has_been_unprefixed"><code>box-sizing</code> has been unprefixed</h3>
  <ul>
   <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=243412">Bug&nbsp;243412 – Implement 'box-sizing' (dropping the -moz- prefix)</a></li>
  </ul>
  <p>The {{ cssxref("box-sizing") }} property has been unprefixed. While <code>-moz-box-sizing</code> will be left for a reasonable period of time, developers are encouraged to use the unprefixed property instead.</p>
 </section>
</section>
<section id="sect5">
 <h2 id="DOM">DOM</h2>
 <section id="sect6">
  <h3 id="cloneNode_and_importNode_has_defaulted_to_shallow_clones"><code>cloneNode</code> and <code>importNode</code> has defaulted to shallow clones</h3>
  <ul>
   <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=937461">Bug&nbsp;937461 – Make cloneNode/importNode with the "deep" arg not passed default to shallow cloning</a></li>
  </ul>
  <p>The {{ domxref("Node.cloneNode") }} and {{ domxref("document.importNode") }} methods take the boolean <code>deep</code> argument. It was optional in the DOM4 specification, and if omitted, these methods acted as if the value of <code>deep</code> was <code>true</code>. But this behavior has been changed in the latest spec, and if omitted, the methods will act as if the value was <code>false</code>. This means a shallow clone is now default instead of a deep clone. <a href="/en-US/Firefox/Releases/28/Site_Compatibility">Firefox&nbsp;28</a> warned developers in console not to omit the argument for the forward compatibility.</p>
 </section>
 <section id="sect7">
  <h3 id="navigator.plugins_is_no_longer_enumerable"><code>navigator.plugins</code> is no longer enumerable</h3>
  <ul>
   <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=757726">Bug&nbsp;757726 – disallow enumeration of navigator.plugins</a></li>
  </ul>
  <p>The {{ domxref("PluginArray") }} interface, returned by the {{ domxref("window.navigator.plugins") }} property, has been restricted so enumeration does not return all installed plug-in names. This change is intended to enhance user privacy by reducing the effectiveness of specific fingerprinting techniques. This privacy change does not disable any plug-ins; it just hides some plug-in names from enumeration. Web sites that must check for the presence of a browser plug-in should query <code>navigator.plugins</code> or {{ domxref("window.navigator.mimeTypes") }} by exact name instead of enumerating all plug-in or MIME type names. This change was originally planned for <a href="/en-US/Firefox/Releases/28">Firefox&nbsp;28</a>. Mozilla is tracking <a href="https://bugzilla.mozilla.org/showdependencytree.cgi?id=934107">some affected sites</a>.</p>
 </section>
 <section id="sect8">
  <h3 id="HTMLIFrameElement.sandbox_now_returns_a_DOMSettableTokenList"><code>HTMLIFrameElement.sandbox</code> now returns a <code>DOMSettableTokenList</code></h3>
  <ul>
   <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=845057">Bug&nbsp;845057 – Fix the type of HTMLIFrameElement.sandbox</a></li>
  </ul>
  <p>Previously, the <code>sandbox</code> property of the {{ domxref("HTMLIFrameElement") }} interface (the {{ HTMLElement("iframe") }} element) returned a string value like <code>allow-same-origin</code>. This type has been changed to {{ domxref("DOMSettableTokenList") }} to meet the latest spec. <code>sandbox.value</code> returns a string notation as before.</p>
 </section>
 <section id="sect9">
  <h3 id="_content.2C_pkcs11_and_LoadStatus_have_been_removed_from_window"><code>_content</code>, <code>pkcs11</code> and <code>LoadStatus</code> have been removed from <code>window</code></h3>
  <ul>
   <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=946564">Bug&nbsp;946564 – Make window._content chromeonly</a></li>
   <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=964964">Bug&nbsp;964964 – Try to remove window.pkcs11</a></li>
   <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=949292">Bug&nbsp;949292 – Stop exposing LoadStatus on the global object</a></li>
  </ul>
  <p>As part of the ongoing effort to standardize global objects, some properties have been removed from {{ domxref("window") }}. The <code>_content</code> property is no longer available from Web content in favor of {{ domxref("window.content") }}. The {{ domxref("window.pkcs11") }} has returned <code>null</code> since Firefox&nbsp;3.0.14 for security reasons. The non-standard <code>LoadStatus</code> interface is also no longer available on <code>window</code>.</p>
 </section>
 <section id="sect10">
  <h3 id="Attr.ownerElement_has_been_removed"><code>Attr.ownerElement</code> has been removed</h3>
  <ul>
   <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=957431">Bug&nbsp;957431 – Remove Attr.ownerElement</a></li>
  </ul>
  <p>The <code>ownerElement</code> property on the {{ domxref("Attr") }} interface has been deprecated since Firefox&nbsp;7 and removed from Firefox&nbsp;29.</p>
 </section>
</section>
<section id="sect11">
 <h2 id="JavaScript">JavaScript</h2>
 <section id="sect12">
  <h3 id="Generator_now_returns_an_IteratorResult_instead_of_throwing">Generator now returns an <code>IteratorResult</code> instead of throwing</h3>
  <ul>
   <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=958951">Bug&nbsp;958951 – Return IteratorResult object for completed generators instead of throwing</a></li>
  </ul>
  <p>The ECMAScript&nbsp;6 compliant syntax for <a href="http://wiki.ecmascript.org/doku.php?id=harmony:generators">Generators (yield)</a> has been introduced with <a href="/en-US/Firefox/Releases/26">Firefox&nbsp;26</a>. The implementation has been updated for the latest spec, and a completed generator function now returns an <code>IteratorResult</code> object like <code>{ value: undefined, done: true }</code> instead of throwing a <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError"><code>TypeError</code></a>. This behavior matches the iterator of the <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array"><code>Array</code></a>, <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map"><code>Map</code></a> and <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set"><code>Set</code></a> interfaces, that the implementation has been updated with <a href="/en-US/Firefox/Releases/27/Site_Compatibility">Firefox&nbsp;27</a>.</p>
 </section>
</section>
<section id="sect13">
 <h2 id="WebGL">WebGL</h2>
 <section id="sect14">
  <h3 id="moz-webgl_context_requests_are_no_longer_supported"><code>moz-webgl</code> context requests are no longer supported</h3>
  <ul>
   <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=913597">Bug&nbsp;913597 – Remove support for 'moz-webgl' context requests</a></li>
  </ul>
  <p>The support for retrieving a <a href="/en-US/docs/Web/WebGL">WebGL</a> context from a <a href="/en-US/docs/HTML/Canvas">Canvas</a> using the obsolete <code>moz-webgl</code> name has been removed. Use the standard <code>webgl</code> context instead as described in <a href="/en-US/docs/Web/WebGL/Getting_started_with_WebGL#Creating_a_WebGL.C2.A0context">Getting started with WebGL</a>.</p>
 </section>
</section>
<section id="sect16">
 <h2 id="Miscellaneous">Miscellaneous</h2>
 <section id="sect17">
  <h3 id="A_minimum_width_has_been_set_for_the_browser_window">A minimum width has been set for the browser window</h3>
  <ul>
   <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=897160">Bug&nbsp;897160 – Set a minimum width for the Firefox window</a></li>
  </ul>
  <p>To avoid a potential UI clipping issue with the new <a href="https://blog.mozilla.org/ux/2013/11/australis-is-landing-in-firefox-nightly/">Australis theme</a> introduced with Firefox&nbsp;29, a minimum width has been set for the Firefox desktop browser window. This size is <code>425px</code> on OS&nbsp;X and <code>390px</code> on other platforms. If you were resizing the window to test your mobile site, the convenient <a href="/en-US/docs/Tools/Responsive_Design_View">Responsive Design View</a> can be used instead. The minimum width is not applied to pop-up windows, so this shouldn't affect content display.</p>
 </section>
</section>
Revert to this revision