mozilla

Compare Revisions

Firefox 8 for developers

Change Revisions

Revision 60285:

Revision 60285 by Sheppy on

Revision 60286:

Revision 60286 by Sheppy on

Title:
Firefox 8 for developers
Firefox 8 for developers
Slug:
Firefox_8_for_developers
Firefox_8_for_developers
Tags:
Firefox, "Firefox 8"
Firefox, "Firefox 8"
Content:

Revision 60285
Revision 60286
t8      Tempt8      Firefox 8 was released on November 8, 2011. This article pr
 >ovides information both for <a href="/en/Firefox_8_for_developers
 >#Changes_for_web_developers" title="en/Firefox_8_for_developers#C
 >hanges_for_web_developers">web developers</a> and for add-on and 
 ><a href="/en/Firefox_8_for_developers#Changes_for_Mozilla_and_add
 >-on_developers" title="en/Firefox_8_for_developers#Changes_for_Mo
 >zilla_and_add-on_developers">Mozilla project developers</a> to he
 >lp take full advantage of the features of this release.
9    </p>
10    <h2>
11      Changes for web developers
12    </h2>
13    <h3>
14      HTML
15    </h3>
16    <ul>
17      <li>The {{ domxref("HTMLImageElement") }} <code>crossOrigin
 ></code> property has been added and the {{ htmlattrxref("crossori
 >gin", "img") }} attribute has been added to the {{ HTMLElement("i
 >mg") }} element. (see {{ bug("664299") }})
18      </li>
19      <li>The {{ domxref("HTMLSelectElement","","add()") }} metho
 >d now supports either an item or index of an item that the new it
 >em should be inserted before. Previously it only supported an ite
 >m. (see {{ bug("666200") }})
20      </li>
21      <li>The <code>HTMLIsIndexElement</code> constructor has bee
 >n removed. No elements have implemented this interface since befo
 >re Firefox 4.
22      </li>
23      <li>The HTML5 "context menu" feature (<code>contextmenu</co
 >de> attribute), which lets you add custom element specific items 
 >to native context menu, is now supported (the implementation is s
 >till experimental awaiting changes in the specification; see {{ b
 >ug("617528") }}).
24      </li>
25      <li>Support for the <a href="/en/HTML/Global_attributes#att
 >r-accesskeylabel" title="https://developer.mozilla.org/en/HTML/Gl
 >obal_attributes#attr-accesskeylabel"><code>accesskeylabel</code><
 >/a> attribute has been added to all elements.
26      </li>
27      <li>The {{ HTMLElement("input") }} and {{ HTMLElement("text
 >area") }} elements now support the <code>selectionDirection</code
 >> attribute, and their <code>setSelectionRange()</code> methods h
 >ave been updated to support optionally specifying a direction.
28      </li>
29      <li>Most elements now get a focus ring drawn around them if
 > they've been made focusable by using the <code>tabindex</code> a
 >ttribute and the user then focuses the element.
30      </li>
31    </ul>
32    <h3>
33      DOM
34    </h3>
35    <ul>
36      <li>The {{ domxref("Element.insertAdjacentHTML","insertAdja
 >centHTML") }} method has been implemented.
37      </li>
38      <li>{{ domxref("BlobBuilder") }} now has a <code>getFile()<
 >/code> method that returns the content of the blob as a file.
39      </li>
40      <li>The {{ domxref("FileReaderSync") }} interface (part of 
 >the FileAPI) has been implemented.
41      </li>
42      <li>Event handling in nested {{ HTMLElement("label") }}s ha
 >s been fixed.
43      </li>
44      <li>You can now use {{ domxref("window.postMessage()") }} t
 >o pass {{ domxref("File") }} and {{ domxref("FileList") }} object
 >s between windows.
45      </li>
46      <li>When editing {{ domxref("element.contenteditable") }} a
 >reas, exiting a heading by pressing return, or exiting list editi
 >ng mode by pressing return twice, now returns to paragraph entry 
 >mode (that is, paragraphs inside {{ HTMLElement("p") }} blocks) i
 >nstead of separating lines by {{ HTMLElement("br") }} elements.
47      </li>
48      <li>Fixed a bug that prevents justification from taking eff
 >ect properly when applied to the first line in a {{ domxref("elem
 >ent.contenteditable") }} area.
49      </li>
50      <li>Fixed a bug that caused pressing delete or backspace at
 > the beginning of a {{ domxref("element.contenteditable") }} area
 > to affect the previous <code>contenteditable</code> block if one
 > is present.
51      </li>
52      <li>{{ domxref("document.getSelection()") }} now returns th
 >e same <code>Selection</code> object as {{ domxref("window.getSel
 >ection()") }}, instead of <em>stringifying</em> it.
53      </li>
54      <li>The HTML5 <code>selectionDirection</code> property make
 >s it possible to define the direction of the selection in an edit
 >able text.
55      </li>
56      <li>{{ domxref("HTMLMediaElement") }} now have a <code>seek
 >able</code> property that return a {{ domxref("TimeRanges") }} ob
 >ject.
57      </li>
58      <li>The {{ domxref("HTMLMediaElement") }}<code>.preload</co
 >de> attribute now correctly reflects as an <em>enumerated value</
 >em>.
59      </li>
60      <li>
61        <a href="/en/HTML/CORS_settings_attributes" title="en/HTM
 >L/CORS_settings_attributes"><code>crossOrigin</code> property</a>
 > defaults to "Anonymous" when an invalid value is used.
62      </li>
63      <li>{{ domxref("window.navigator.cookieEnabled") }} now ret
 >urns correct information when the default cookie setting is overr
 >idden on a per-site basis.
64      </li>
65    </ul>
66    <h3>
67      JavaScript
68    </h3>
69    <ul>
70      <li>
71        <code><a href="/en/JavaScript/Reference/Global_Objects/Re
 >gExp/exec" title="en/JavaScript/Reference/Global Objects/RegExp/e
 >xec">RegExp.exec()</a></code> and <code><a href="/en/JavaScript/R
 >eference/Global_Objects/RegExp/test" title="en/JavaScript/Referen
 >ce/Global Objects/RegExp/test">RegExp.test()</a></code> called wi
 >th no arguments now match against the string "undefined".
72      </li>
73      <li>
74        <code><a href="/en/JavaScript/Reference/Global_Objects/St
 >ring/search" title="en/JavaScript/Reference/Global Objects/String
 >/search">String.search()</a></code> and <code><a href="/en/JavaSc
 >ript/Reference/Global_Objects/String/match" title="en/JavaScript/
 >Reference/Global Objects/String/match">String.match()</a></code> 
 >called with no arguments or <code>undefined</code> now match agai
 >nst the empty string and thus match every string.
75      </li>
76      <li>Support for watchlists has been implemented with the ne
 >w (non-standard) <a href="/en/JavaScript/Reference/Global_Objects
 >/Object/watch" title="en/JavaScript/Reference/Global_Objects/Obje
 >ct/watch"><code>watch()</code></a> and <a href="/en/JavaScript/Re
 >ference/Global_Objects/Object/unwatch" title="en/JavaScript/Refer
 >ence/Global_Objects/Object/unwatch"><code>unwatch()</code></a> me
 >thods.
77      </li>
78    </ul>
79    <h3>
80      CSS
81    </h3>
82    <ul>
83      <li>{{ cssxref("resolution") }} now accepts {{ xref_cssnumb
 >er() }}, not just {{ xref_cssinteger() }} values as per the speci
 >fication.
84      </li>
85      <li>Hyphenation rules have been added for many new language
 >s when using {{ cssxref("hyphens") }}.
86      </li>
87      <li>Handling of {{ cssxref("background-size") }} has been r
 >evised to more closely match the specification.
88      </li>
89      <li>In the past, {{ cssxref("text-decoration") }} in quirks
 > mode had line thickness and position adjusted on descendant text
 > to match the descendant. Now standards mode and quirks mode rend
 >ering are more similar.
90      </li>
91      <li>Horizontal positioning for elements has been brought mo
 >re in line with the specification in many cases. Documentation fo
 >r this is forthcoming, but for now, see {{ bug("682780") }}, comm
 >ent 23 for details.
92      </li>
93      <li>
94        <a href="/en/CSS/Scaling_of_SVG_backgrounds" title="en/CS
 >S/Scaling_of_SVG_backgrounds">SVG images are now scaled properly<
 >/a> when used as background images.
95      </li>
96    </ul>
97    <h3>
98      Network
99    </h3>
100    <ul>
101      <li>Double quotes are no longer accepted as a delimiter for
 > {{ RFC("2231") }} or {{ RFC("5987") }} encoding, as per those RF
 >Cs.
102      </li>
103      <li>MIME header field parser (<code>Content-Disposition</co
 >de>) now requires "=" in parameters.
104      </li>
105      <li>Scripts are no longer downloaded when JavaScript is dis
 >abled.
106      </li>
107      <li>SSL 2.0 is no longer supported.
108      </li>
109    </ul>
110    <h3>
111      WebSockets
112    </h3>
113    <ul>
114      <li>The <a href="/en/WebSockets/WebSockets_reference/WebSoc
 >ket" title="WebSocket"><code>WebSocket</code></a> object's <a hre
 >f="/en/WebSockets/WebSockets_reference/WebSocket#send()" title="e
 >n/WebSockets/WebSockets reference/WebSocket#send()"><code>send()<
 >/code></a> method no longer incorrectly returns a Boolean value.
115      </li>
116      <li>The <a href="/en/WebSockets/WebSockets_reference/WebSoc
 >ket" title="WebSocket"><code>WebSocket</code></a> object's <a hre
 >f="/en/WebSockets/WebSockets_reference/WebSocket#close()" title="
 >en/WebSockets/WebSockets_reference/WebSocket#close()"><code>close
 >()</code></a> method now matches the current draft of the standar
 >d, and close events now properly use the <a href="/en/WebSockets/
 >WebSockets_reference/CloseEvent" title="CloseEvent"><code>CloseEv
 >ent</code></a> interface.
117      </li>
118      <li>The <a href="/en/WebSockets/WebSockets_reference/WebSoc
 >ket" title="WebSocket"><code>WebSocket</code></a> object's <code>
 >extensions</code> attribute is now supported.
119      </li>
120      <li>The WebSocket constructor now supports an array of prot
 >ocols as well as a single protocol string.
121      </li>
122      <li>Mixed content is not allowed with WebSockets; that is, 
 >you can no longer open a connection to a non-secure WebSocket ser
 >ver from secure content.
123      </li>
124      <li>Connection errors with WebSockets now trigger the <code
 >>onerror</code> handler.
125      </li>
126      <li>
127        <a href="/en/WebSockets" title="en/WebSockets">WebSocket<
 >/a> API has been updated to the latest draft of the specification
 > (see {{ bug("674890") }}, {{ bug("674527") }}, and {{ bug("67471
 >6") }}).
128      </li>
129      <li>The deflate-stream extension to WebSockets has been dis
 >abled; it has been deprecated, and was breaking compatibility wit
 >h some sites.
130      </li>
131    </ul>
132    <h3>
133      WebGL
134    </h3>
135    <ul>
136      <li>
137        <a href="/en/WebGL/Cross-Domain_Textures" title="en/WebGL
 >/Cross-Domain Textures">Cross-domain textures</a> can now be allo
 >wed with CORS approval.
138      </li>
139      <li>Cross-process rendering with Direct2D/Direct3D 10.
140      </li>
141    </ul>
142    <h3>
143      MathML
144    </h3>
145    <ul>
146      <li>Support for the <code>displaystyle</code> attribute on 
 >the top-level {{ MathMLElement("math") }} element has been added.
147      </li>
148      <li>The interpretation of negative row numbers for the <cod
 >e>align</code> attribute on {{ MathMLElement("mtable") }} has bee
 >n corrected.
149      </li>
150    </ul>
151    <h3>
152      Developer tools
153    </h3>
154    <ul>
155      <li>The <a href="/en/Using_the_Web_Console#The_console_obje
 >ct" title="en/Using_the_Web_Console#The_console_object"><code>con
 >sole</code></a> object has a new <code>dir()</code> method, which
 > displays an interactive list of the properties on a specified ob
 >ject.
156      </li>
157    </ul>
158    <h2>
159      Changes for Mozilla and add-on developers
160    </h2>
161    <p>
162      See <a href="/en/Firefox/Updating_add-ons_for_Firefox_8" ti
 >tle="en/Firefox/Updating_add-ons_for_Firefox_8">Updating add-ons 
 >for Firefox 8</a> for a guide to changes you're likely to have to
 > make to make your add-ons compatible with Firefox 8.
163    </p>
164    <div class="note">
165      <strong>Note:</strong> Firefox 8 requires that binary compo
 >nents be recompiled, as do all major releases of Firefox. See <a 
 >href="/En/Developer_Guide/Interface_Compatibility#Binary_Interfac
 >es" title="En/Developer_Guide/Interface_Compatibility#Binary_Inte
 >rfaces">Binary Interfaces</a> for details.
166    </div>
167    <h3>
168      XPCOM
169    </h3>
170    <dl>
171      <dt>
172        <a href="/en/Components.utils" title="en/Components.utils
 >"><code>Components.utils</code></a>
173      </dt>
174      <dd>
175        The new methods <a href="/en/Components.utils.createObjec
 >tIn" title="en/Components.utils.createObjectIn"><code>Components.
 >utils.createObjectIn()</code></a> and <a href="/en/Components.uti
 >ls.makeObjectPropsNormal" title="en/Components.utils.makeObjectPr
 >opsNormal"><code>Components.utils.makeObjectPropsNormal()</code><
 >/a> have been created to make it easier to create objects in spec
 >ific compartments.
176      </dd>
177    </dl>
178    <h4>
179      Other XPCOM related changes
180    </h4>
181    <ul>
182      <li>You can now instantiate DOM {{ domxref("File") }} objec
 >ts from component code by simply doing new File, instead of havin
 >g to instantiate an {{ interface("nsIDOMFile") }} directly.
183      </li>
184      <li>The <code>nsTPtrArray</code> array type has been remove
 >d. Its functionality is now all available on <code>nsTArray</code
 >>, which now offers the <code>SafeElementAt()</code> method when 
 >instantiated using a pointer type. See the section on <a href="/e
 >n/XPCOM_array_guide#Bounds-safe_access_to_elements" title="en/XPC
 >OM_array_guide#Bounds-safe_access_to_elements"><code>SafeElementA
 >t()</code></a> in the <a href="/en/XPCOM_array_guide" title="XPCO
 >M array guide">XPCOM array guide</a> for more information.
185      </li>
186    </ul>
187    <h3>
188      Workers
189    </h3>
190    <p>
191      It is no longer possible to access XPCOM objects from Chrom
 >eWorkers. XPConnect has been disabled in worker contexts as of {{
 > bug("649537") }}.
192    </p>
193    <h3>
194      XUL
195    </h3>
196    <ul>
197      <li>A bug in {{ domxref("document.execCommand()") }} that o
 >ccurred when calling it on the value of {{ XULProp("contentDocume
 >nt") }} has been fixed. Since Firefox 3, this resulted in errors 
 >instead of working correctly.
198      </li>
199      <li>
200        <a href="/en/Extensions/Bootstrapped_extensions" title="B
 >ootstrapped extensions">Bootstrapped add-ons</a> can now load chr
 >ome using a <a href="/en/Chrome_Registration" title="en/chrome.ma
 >nifest"><code>chrome.manifest</code></a> file. See the section <a
 > href="/en/Extensions/Bootstrapped_extensions#Adding_user_interfa
 >ce_with_a_chrome.manifest" title="en/Extensions/Bootstrapped_exte
 >nsions#Adding_user_interface_with_a_chrome.manifest">Adding user 
 >interface with a chrome.manifest</a> for details.
201      </li>
202    </ul>
203    <h3>
204      JavaScript code modules
205    </h3>
206    <h4>
207      ISO8601DateUtils.jsm
208    </h4>
209    <ul>
210      <li>This code module has been removed. The <code><a href="/
 >en/JavaScript/Reference/Global_Objects/Date/parse" title="en/Java
 >Script/Reference/Global_Objects/Date/parse">Date.parse()</a></cod
 >e> method now supports reading ISO 8601 dates, and the new <code>
 ><a href="/en/JavaScript/Reference/Global_Objects/Date/toISOString
 >" title="toISOString">Date.toISOString()</a></code> function allo
 >ws to output ISO date/time. These should be used instead. Note th
 >at they <a class="link-https" href="https://bugzilla.mozilla.org/
 >show_bug.cgi?id=693077" title="https://bugzilla.mozilla.org/show_
 >bug.cgi?id=693077">do not accept timezones yet</a>.
211      </li>
212    </ul>
213    <h3>
214      Changes to the build system
215    </h3>
216    <ul>
217      <li>The following build configuration options have been rem
 >oved:
218        <ul>
219          <li>
220            <code>--enable-timeline</code>
221          </li>
222          <li>
223            <code>--disable-storage</code>
224          </li>
225          <li>
226            <code>--necko-disk-cache</code>
227          </li>
228        </ul>
229      </li>
230      <li>When compiling IDL files to headers, the header file <c
 >ode>jspubtd.h</code> is automatically included when needed. Manua
 >l inclusions of <code>jspubtd.h</code> and/or <code>jsapi.h</code
 >> in IDL files that use jsval or [implicit_jscontext] are no long
 >er necessary.
231      </li>
232    </ul>
233    <h3>
234      Chrome registration
235    </h3>
236    <ul>
237      <li>The <a href="/en/Chrome_Registration#platformversion" t
 >itle="en/Chrome_Registration#platformversion"><code>platformversi
 >on</code></a> flag can be used in the chrome.manifest to specify 
 >Gecko version compatibility.
238      </li>
239    </ul>
240    <h3>
241      Interface changes
242    </h3>
243    <ul>
244      <li>The {{ ifmethod("mozIJSSubScriptLoader", "loadSubScript
 >") }} method now loads scripts from the startup cache when possib
 >le.
245      </li>
246      <li>The <code>ownerWindow</code> attribute has been removed
 > from the {{ interface("nsIAccessNode") }} interface.
247      </li>
248      <li>The {{ interface("nsIDOMStorageWindow") }} interface ha
 >s been merged into the {{ interface("nsIDOMWindow") }} interface.
249      </li>
250      <li>All members of the {{ interface("nsIDOMWindowInternal")
 > }} interface have been moved into the {{ interface("nsIDOMWindow
 >") }} interface. The interface itself (with no members) remains a
 >vailable for compatibility until Firefox 9.
251      </li>
252      <li>In order to improve performance, callback handling for 
 >asynchronous Places database updates has been changed. See the ne
 >w {{ ifmethod("mozIVisitInfoCallback", "handleResult") }} and {{ 
 >ifmethod("mozIVisitInfoCallback", "handleError") }} methods, whic
 >h replace the old single method for both error and success condit
 >ion handling.
253      </li>
254      <li>The {{ interface("nsIMemoryReporter") }} <code>KIND_MAP
 >PED</code> attribute has been deprecated in favor of <code>KIND_N
 >ONHEAP</code>, new unit types <code>UNITS_COUNT_CUMULATIVE</code>
 > and <code>UNITS_PERCENTAGE</code> have been added.
255      </li>
256      <li>The {{ interface("nsIMemoryReporterManager") }} interfa
 >ce has a new <code>explicit</code> attribute, which reports the t
 >otal size of explicit memory allocations.
257      </li>
258      <li>The {{ interface("nsIMemoryReporterManager") }} interfa
 >ce has a new <code>resident</code> attribute, which reports the a
 >mount of physical memory used.
259      </li>
260      <li>The {{ interface("nsINetworkLinkService") }} interface 
 >has a new attribute, <code>linkType</code>. This attribute provid
 >es the type of network connection in use. All Operating Systems c
 >urrently return <code>LINK_TYPE_UNKNOWN</code>. Android support w
 >as backed out due to perceived security concerns.
261      </li>
262      <li>The {{ interface("nsISelection2") }} interface has been
 > merged into the {{ interface("nsISelectionPrivate") }} interface
 >.
263      </li>
264      <li>The {{ interface("nsISelection3") }} interface has been
 > merged into the {{ interface("nsISelection") }} interface.
265      </li>
266      <li>The {{ interface("nsISessionStartup") }} attribute stat
 >e is now a <a href="/En/SpiderMonkey/JSAPI_Reference/Jsval" title
 >="en/jsval"><code>jsval</code></a> instead of a string, for perfo
 >rmance reasons.
267      </li>
268      <li>The {{ interface("nsIDocShell") }} attribute <code>isAc
 >tive</code> is now <code>false</code> for minimized windows.
269      </li>
270    </ul>
271    <h4>
272      Removed interfaces
273    </h4>
274    <p>
275      The following interfaces were implementation details that a
 >re no longer needed:
276    </p>
277    <ul>
278      <li>
279        <code>nsITimelineService</code>
280      </li>
281      <li>
282        <code>nsIDOMHTMLIsIndexElement</code>
283      </li>
284    </ul>
285    <p>
286      The {{ interface("nsIWorkerFactory") }} interface has been 
 >removed as well. Workers can still be created using the <code>Wor
 >ker</code> and <code>ChromeWorker</code> constructors.
287    </p>
288    <h3>
289      Other changes
290    </h3>
291    <ul>
292      <li>When a window is minimized, un-minimized, or switches b
 >etween full screen and windowed mode, it receives a <code>sizemod
 >echange</code> event.
293      </li>
294      <li>You can now <a href="/en/Installing_extensions#Preventi
 >ng_automatic_install_from_specific_locations" title="en/Installin
 >g_extensions#Preventing_automatic_install_from_specific_locations
 >">use the <code>extensions.autoDisableScopes</code> preference</a
 >> to disable automatic installation of add-ons from specific add-
 >on install locations.
295      </li>
296      <li>The new {{ domxref("document.mozSyntheticDocument") }} 
 >property on {{ domxref("Document") }} objects lets you determine 
 >whether a document is synthetic (that is, something like a standa
 >lone image, video, or audio file) rather than a full, standard DO
 >M document. This can be useful, for example, if you want to prese
 >nt different user interface in this situation (such as adding con
 >textual items differently depending on this case).
297      </li>
298      <li>You can now specify a filter when opening <code>about:c
 >onfig</code>; for example, "about:config?filter=sessionstore" wil
 >l show only session storage related preferences.
299      </li>
300    </ul>
301    <h2>
302      See also
303    </h2>
304    <ul>
305      <li>
306        <a href="/en/Firefox_7_for_developers" title="en/Firefox_
 >7_for_developers">Firefox 7 for developers</a>
307      </li>
308      <li>
309        <a href="/en/Firefox_6_for_developers" title="en/Firefox_
 >6_for_developers">Firefox 6 for developers</a>
310      </li>
311      <li>
312        <a href="/en/Firefox_5_for_developers" title="en/Firefox_
 >5_for_developers">Firefox 5 for developers</a>
313      </li>
314      <li>
315        <a href="/en/Firefox_4_for_developers" title="en/Firefox_
 >4_for_developers">Firefox 4 for developers</a>
316      </li>
317      <li>
318        <a href="/en/Firefox_3.6_for_developers" title="en/Firefo
 >x_3.6_for_developers">Firefox 3.6 for developers</a>
319      </li>
320      <li>
321        <a href="/En/Firefox_3.5_for_developers" title="En/Firefo
 >x_3.5_for_developers">Firefox 3.5 for developers</a>
322      </li>
323      <li>
324        <a href="/en/Firefox_3_for_developers" title="en/Firefox_
 >3_for_developers">Firefox 3 for developers</a>
325      </li>
326      <li>
327        <a href="/en/Firefox_2_for_developers" title="en/Firefox_
 >2_for_developers">Firefox 2 for developers</a>
328      </li>
329      <li>
330        <a href="/en/Firefox_1.5_for_developers" title="en/Firefo
 >x_1.5_for_developers">Firefox 1.5 for developers</a>
331      </li>
332    </ul>
333    <p>
334      {{ languages( { "ja": "ja/Firefox_8_for_developers" } ) }}

Back to History