Firefox 8 技術文件
Firefox 8 was released on November 8, 2011. This article provides information both for web developers and for add-on and Mozilla project developers to help take full advantage of the features of this release.
Changes for web developers
HTML
- The 元素的畫面佈局與外觀呈現。">
HTMLImageElement
crossOrigin
property has been added and thecrossorigin
(en-US) attribute has been added to the<img>
(en-US) element. (see bug 664299) - The
HTMLSelectElement.add()
method now supports either an item or index of an item that the new item should be inserted before. Previously it only supported an item. (see bug 666200) - The
HTMLIsIndexElement
constructor has been removed. No elements have implemented this interface since before Firefox 4. - The HTML5 "context menu" feature (
contextmenu
attribute), which lets you add custom element specific items to native context menu, is now supported (the implementation is still experimental awaiting changes in the specification; see bug 617528). - Support for the
accesskeylabel
attribute has been added to all elements. - The element is used to create interactive controls for web-based forms in order to accept data from the user.">
<input>
and<textarea>
(en-US) elements now support theselectionDirection
attribute, and theirsetSelectionRange()
methods have been updated to support optionally specifying a direction. - Most elements now get a focus ring drawn around them if they've been made focusable by using the
tabindex
attribute and the user then focuses the element. - In a set of nested
<label>
(en-US) elements click events do no longer trigger multiple elements, which caused Firefox to stop responding in the past (see s">bug 646157).
DOM
- The
insertAdjacentHTML
method has been implemented. BlobBuilder
(en-US) now has agetFile()
method that returns the content of the blob as a file.- The
FileReaderSync
(en-US) interface (part of the FileAPI) has been implemented. - Event handling in nested
<label>
(en-US)s has been fixed. - You can now use
window.postMessage()
(en-US) to passFile
and 元素 DOM 物件的 files 屬性(property)。你可以操作 FileList 物件來存取使用者透過 <input type="file"> 元素所選取的檔案,或由拖放操作所產生的檔案(請參考 DataTransfer 物件的更多使用細節)。'>FileList
objects between windows. - When editing
element.contenteditable
areas, exiting a heading by pressing return, or exiting list editing mode by pressing return twice, now returns to paragraph entry mode (that is, paragraphs inside<p>
(en-US) blocks) instead of separating lines by 元素會產生文字的斷行(carriage-return、CR 或是確認鍵)。此元素主要用於寫詩或寫住址,這種斷行有所意義的時候。"><br>
elements. - Fixed a bug that prevents justification from taking effect properly when applied to the first line in a
element.contenteditable
area. - Fixed a bug that caused pressing delete or backspace at the beginning of a
element.contenteditable
area to affect the previouscontenteditable
block if one is present. document.getSelection()
(en-US) now returns the sameSelection
object aswindow.getSelection()
(en-US), instead of stringifying it.- The HTML5
selectionDirection
property makes it possible to define the direction of the selection in an editable text. HTMLMediaElement
now have aseekable
property that return aTimeRanges
(en-US) object.- The
HTMLMediaElement
.preload
attribute now correctly reflects as an enumerated value. crossOrigin
property defaults to "Anonymous" when an invalid value is used.window.navigator.cookieEnabled
now returns correct information when the default cookie setting is overridden on a per-site basis.
JavaScript
RegExp.exec()
andRegExp.test()
called with no arguments now match against the string "undefined".String.search()
andString.match()
called with no arguments orundefined
now match against the empty string and thus match every string.- Support for watchlists has been implemented with the new (non-standard)
watch()
andunwatch()
methods.
CSS
resolution
(en-US) now accepts<number>
(en-US), not just<integer>
(en-US) values as per the specification.- Hyphenation rules have been added for many new languages when using
hyphens
(en-US). - Handling of
background-size
(en-US) has been revised to more closely match the specification. - In the past,
text-decoration
(en-US) in quirks mode had line thickness and position adjusted on descendant text to match the descendant. Now standards mode and quirks mode rendering are more similar. - Horizontal positioning for elements has been brought more in line with the specification in many cases. Documentation for this is forthcoming, but for now, see bug 682780, comment 23 for details.
- SVG images are now scaled properly when used as background images.
Network
WebSockets
- The
WebSocket
object'ssend()
method no longer incorrectly returns a Boolean value. - The
WebSocket
object'sclose()
method now matches the current draft of the standard, and close events now properly use theCloseEvent
interface. - The
WebSocket
object'sextensions
attribute is now supported. - The WebSocket constructor now supports an array of protocols as well as a single protocol string.
- Mixed content is not allowed with WebSockets; that is, you can no longer open a connection to a non-secure WebSocket server from secure content.
- Connection errors with WebSockets now trigger the
onerror
handler. - WebSocket API has been updated to the latest draft of the specification (see bug 674890, bug 674527, and bug 674716).
- The deflate-stream extension to WebSockets has been disabled; it has been deprecated, and was breaking compatibility with some sites.
WebGL
- Cross-domain textures can now be allowed with CORS approval.
- Cross-process rendering with Direct2D/Direct3D 10.
MathML
- Support for the
displaystyle
attribute on the top-level"><math>
(en-US) element has been added. - The interpretation of negative row numbers for the
align
attribute on"><mtable>
(en-US) has been corrected.
Developer tools
- The
console
object has a newdir()
method, which displays an interactive list of the properties on a specified object.
Changes for Mozilla and add-on developers
See Updating add-ons for Firefox 8 for a guide to changes you're likely to have to make to make your add-ons compatible with Firefox 8.
備註: Firefox 8 requires that binary components be recompiled, as do all major releases of Firefox. See Binary Interfaces for details.
XPCOM
Components.utils
-
The new methods
Components.utils.createObjectIn()
andComponents.utils.makeObjectPropsNormal()
have been created to make it easier to create objects in specific compartments.
Other XPCOM related changes
- You can now instantiate DOM
File
objects from component code by simply doing new File, instead of having to instantiate annsIDOMFile
directly. - The
nsTPtrArray
array type has been removed. Its functionality is now all available onnsTArray
, which now offers theSafeElementAt()
method when instantiated using a pointer type. See the section onSafeElementAt()
in the XPCOM array guide for more information.
Workers
It is no longer possible to access XPCOM objects from ChromeWorkers. XPConnect has been disabled in worker contexts as of bug 649537.
XUL
- A bug in
document.execCommand()
that occurred when calling it on the value ofcontentDocument
has been fixed. Since Firefox 3, this resulted in errors instead of working correctly. - Bootstrapped add-ons can now load chrome using a
chrome.manifest
file. See the section Adding user interface with a chrome.manifest for details. - XUL images now shrink down with the same ratio in both directions when specifying maximum sizes.
Changes to the build system
- The following build configuration options have been removed:
--enable-timeline
--disable-storage
--necko-disk-cache
- When compiling IDL files to headers, the header file
jspubtd.h
is automatically included when needed. Manual inclusions ofjspubtd.h
and/orjsapi.h
in IDL files that use jsval or [implicit_jscontext] are no longer necessary.
Chrome registration
- The
platformversion
flag can be used in the chrome.manifest to specify Gecko version compatibility.
Interface changes
- The
mozIJSSubScriptLoader.loadSubScript()
method now loads scripts from the startup cache when possible. - The
ownerWindow
attribute has been removed from thensIAccessNode
interface. - The
nsIDOMStorageWindow
interface has been merged into thensIDOMWindow
interface. - All members of the
nsIDOMWindowInternal
interface have been moved into thensIDOMWindow
interface. The interface itself (with no members) remains available for compatibility until Firefox 9. - In order to improve performance, callback handling for asynchronous Places database updates has been changed. See the new
mozIVisitInfoCallback.handleResult()
andmozIVisitInfoCallback.handleError()
methods, which replace the old single method for both error and success condition handling. - The
nsIMemoryReporter
KIND_MAPPED
attribute has been deprecated in favor ofKIND_NONHEAP
, new unit typesUNITS_COUNT_CUMULATIVE
andUNITS_PERCENTAGE
have been added. - The
nsIMemoryReporterManager
interface has a newexplicit
attribute, which reports the total size of explicit memory allocations. - The
nsIMemoryReporterManager
interface has a newresident
attribute, which reports the amount of physical memory used. - The
nsINetworkLinkService
interface has a new attribute,linkType
. This attribute provides the type of network connection in use. All Operating Systems currently returnLINK_TYPE_UNKNOWN
. Android support was backed out due to perceived security concerns. - The
nsISelection2
interface has been merged into thensISelectionPrivate
interface. - The
nsISelection3
interface has been merged into thensISelection
interface. - The
nsISessionStartup
attribute state is now ajsval
instead of a string, for performance reasons. - The
nsIDocShell
attributeisActive
is nowfalse
for minimized windows. - The
nsIDownloadHistory.addDownload()
method now saves the the target where the download is saved on the local file system.
Removed interfaces
The following interfaces were implementation details that are no longer needed:
nsITimelineService
nsIDOMHTMLIsIndexElement
The nsIWorkerFactory
interface has been removed as well. Workers can still be created using the Worker
and ChromeWorker
constructors.
Other changes
- When a window is minimized, un-minimized, or switches between full screen and windowed mode, it receives a
sizemodechange
event. - You can now use the
extensions.autoDisableScopes
preference to disable automatic installation of add-ons from specific add-on install locations. - The new
document.mozSyntheticDocument
(en-US) property onDocument
objects lets you determine whether a document is synthetic (that is, something like a standalone image, video, or audio file) rather than a full, standard DOM document. This can be useful, for example, if you want to present different user interface in this situation (such as adding contextual items differently depending on this case). - You can now specify a filter when opening
about:config
; for example, "about:config?filter=sessionstore" will show only session storage related preferences.