Firefox 10 面向開發者的發行說明
Firefox 10 已於 2012 年 1 月 31 日釋出。本文介紹了此版本中的新功能和已修復的關鍵 bug,並提供了面向 Web 開發者和附加元件開發者的詳細文件連結。
注意: Firefox 10 是該瀏覽器第一個兩位數版本。這可能會導致某些 UA 嗅探指令碼出現問題。請務必檢查它們,以及您嵌入頁面中的第三方軟體(例如庫)所包含的指令碼。有關此內容的更多資訊,請參閱 hack.mozilla.org 上的《Firefox 進入兩位數,是時候檢查你的 UA 嗅探指令碼了》文章。
面向網路開發者的變更
HTML
JavaScript
WeakMap.set()方法現在返回undefined,而不是其自身。- Firefox 7 中引入了一個正則表示式處理 bug;此 bug 已修復。如果您想了解詳細資訊,請參閱 Firefox bug 683838。
- 在 ECMAScript 5 嚴格模式下(即在
"use strict;"之後),您不能再使用已廢棄的 ECMAScript for XML (E4X) 語法。
DOM
DOM3 事件
- 已實現 DOM 事件方法
event.stopImmediatePropagation。 - 已實現滑鼠事件
mouseenter和mouseleave。
DOM4
- 屬性
document.xmlVersion(只能獲取不能設定)已被移除,因為它已在 DOM4 規範中廢棄。有關document.xmlVersion的文章現在建議了一種不使用該屬性來檢測文件是 HTML 還是 XML 的方法。 - 屬性
document.xmlStandalone已被移除,因為它已在 DOM4 規範中廢棄。 - 屬性
document.xmlEncoding已被移除,因為它已在 DOM4 規範中廢棄。 - 屬性
text.isElementContentWhiteSpace已被移除,因為它已在 DOM4 規範中廢棄。 - 方法
text.replaceWholeText已被移除,因為它已在 DOM4 規範中廢棄。 - 方法
node.isSameNode已被移除,因為它已在 DOM4 規範中廢棄。您可以像這樣使用===運算子來代替node1.isSameNode(node2):node1 === node2。
Page Visibility API
- 已實現 頁面可見性 API(帶字首):
document.mozHidden、document.mozVisibilityState可用,並且當狀態被修改時會發送mozvisibilitychanged事件。
全屏 API
- 已新增對
document.fullscreenEnabled的支援。 - 已新增新的
:-moz-full-screen-ancestor屬性。這允許您匹配處於全屏模式的元素的祖先元素。
電池 API
- 已新增對
navigator.mozBattery的實驗性支援(可以透過將首選項dom.battery.enabled設定為true來啟用,並將在 Firefox 11 開始預設啟用)。
Canvas
- 如果指定了零大小的源 Canvas,
createPattern()方法現在會丟擲異常。 - 如果您為
putImageData()的任何數字引數使用非有限值,則現在會默默地忽略該呼叫,而不是丟擲異常,以符合規範。
WebGL
- Firefox 10 現在支援
OES_standard_derivatives擴充套件。 - 已新增新首選項,以幫助在您的完整開發平臺上測試 WebGL 程式碼與最小功能裝置之間的相容性。
Web Workers
- 屬性
XMLHttpRequest.responseType和XMLHttpRequest.response現在可在 Worker 內部使用。 Worker()建構函式現在接受 資料 URL。
IndexedDB
IndexedDB 已在更新至最新草案規範方面取得了巨大進展。這項工作將在 Firefox 11 中繼續。
- 已新增
IDBIndex.count()和IDBObjectStore.count()方法。 - 已新增
IDBCursor.advance()方法。 - 當在
IDBObjectStore.createIndex()或IDBDatabase.createObjectStore()中遇到未知可選引數時,Gecko 將不再丟擲異常,而是忽略它。 - 當呼叫
IDBTransaction.abort()時,所有待處理的IDBRequest的errorCode都將設定為ABORT_ERROR。 - 方法
IDBObjectStore.delete()和IDBCursor.delete()現在將返回的IDBRequest的result屬性設定為undefined。 IDBDatabase.setVersion()方法已被移除,因為它已從最新規範中移除。資料庫的版本透過已更新的IDBFactory.open()方法提供,onupgradeneeded回撥允許升級資料庫的架構。版本本身已從DOMString更改為unsigned long long。IDBVersionChangeRequest介面已被移除,並由新的IDBOpenDBRequest介面取代。- 使用
IDBFactory.open()開啟資料庫時,如果未提供version引數且資料庫不存在,則會以1的版本建立。 - 已新增
IDBFactory.deleteDatabase()方法。 - 透過
IDBKeyRange搜尋的方法(例如IDBObjectStore.openCursor和IDBIndex.getKey)可以接受單個鍵或鍵範圍。
其他
- 當傳入正確的 MIME 型別
image/svg+xml時,DOMParser現在在給定 SVG 字串時會建立一個SVGDocument。 - 過去,當
element.setAttribute()解析整數時,如果整數包含任何非數字字元(例如“42foo”),它會報告錯誤。現在,它會根據規範將其正確截斷為數字 42。 - ESC 鍵不再錯誤地導致
onkeydown處理器被錯誤呼叫。 NameList介面不再實現;它以前有一個實現,但無法實際訪問。document.createProcessingInstruction()方法現在可以在 HTML 文件和 XML 文件上使用。ProcessingInstruction節點仍然只在 XML 文件上受支援,但由於節點可以在文件之間移動,因此能夠在 HTML 文件上建立它們也很有幫助。- Firefox 9 中引入的
XMLHttpRequestresponseType"moz-json"已更新為最新規範草案,並已取消字首。請參閱 Firefox bug 707142 中的註釋。
CSS
- 現在支援 CSS 3D 轉換。這包括支援
transform-style、perspective、perspective-origin和backface-visibility屬性,以及transform和<transform-function>屬性中的 3D 轉換函式。有關詳細資訊,請參閱 使用 CSS 轉換。 - CSS 屬性
unicode-bidi已新增兩個新值:-moz-isolation和-moz-plaintext。-moz-isolation值從方向性角度將元素與其環境隔離,使其具有不同的方向性。具有unicode-bidi:-moz-isolation的元素的行為類似於<bdi>元素。-moz-plaintext指示瀏覽器使用 Unicode 瀏覽器啟發式演算法確定方向性,而不是 CSSdirection屬性。 - CSS
linear-gradient()和repeating-linear-gradient()屬性已更新,以支援新的to語法和魔幻角演算法。這允許在漸變填充框的角落精確指定顏色。 - 已更正
text-overflow屬性在盒子兩側都溢位而text-overflow屬性僅設定為單側溢位情況下的處理。 - 已修復定位
<table>元素內部元素的position屬性處理。此更改將影響頁面佈局;但是,我們現在符合 CSS 規範和其他瀏覽器,因此這應該很容易修復。 - 已修復
<table>元素周圍的邊距摺疊,以匹配 CSS 規範。以前,表格元素的邊距不會與其他相鄰元素一起摺疊,導致佈局不正確。此更改將影響頁面佈局;但是,我們現在符合 CSS 規範和其他瀏覽器,因此這應該很容易修復。
SVG
<mask>元素已更新,以支援 sRGB 和 linearRGB,並且現在預設使用 sRGB,符合 SVG 1.1 規範的最新修訂版。
網路
- HTTP 請求中不再發送 HTTP
Accept-Charset頭部。在缺少它的情況下,伺服器應透過傳送 UTF-8 進行響應。
開發者工具
console物件有兩個新方法:console.time()和console.timeEnd(),可用於在頁面上設定計時器。- 已新增新的 頁面檢查器,它提供了一種檢查和操作內容背後的 HTML 和 CSS 的出色方式。
Mozilla 和附加元件開發者的更改
有關更新附加元件以支援 Firefox 10 時可能出現的問題概述,請參閱 更新 Firefox 10 的附加元件。
注意: 舊的 PRBool 資料型別已退役!文件中任何提及它的地方現在都使用標準 C++ bool 型別代替。文件將在未來更新,但目前,請記住這一點。
清單
- 已向安裝清單添加了對
<em:strictCompatibility>的支援。它允許附加元件作者選擇檢查其擴充套件的最大版本。如果設定為true,則如果應用程式版本大於<em:maxVersion>,則附加元件將被停用。Firefox 10 預設情況下,附加元件是相容的,無論其指定的最大版本如何。此標誌會覆蓋該首選項。如果您的附加元件執行的操作很可能被 Firefox 更新破壞,則應該設定此標誌,但不應在您的附加元件具有二進位制元件時設定此標誌,因為此類附加元件始終會被嚴格檢查(請記住,二進位制元件必須針對每個主要的 Firefox 版本重新編譯)。 - 如果您希望恢復到舊行為——即對所有附加元件進行嚴格相容性檢查,無論其清單中
strictCompatibility標誌的值如何,您可以將extensions.strictCompatibility首選項設定為true。
XUL
- 使用
chrome.manifest檔案的自舉附加元件現在會自動註冊清單檔案。有關詳細資訊,請參閱 使用 chrome.manifest 新增使用者介面 一節。
XPConnect
Components.utils已新增幾個新的屬性和方法,用於訪問各種與除錯相關的資訊。
介面更改
mozISpellCheckingEngine和nsIEditorSpellCheck介面已更新,允許無重啟附加元件向拼寫檢查器新增字典。nsIBrowserHistory.lastPageVisited屬性已移除。nsIDocumentViewer介面已合併到nsIContentViewer中。nsIURIFixup介面有一個新標誌FIXUP_FLAG_USE_UTF8,它允許您在進行轉換時告訴它使用 UTF-8 而不是平臺字元集。
外掛更改
- 已新增新的變數
NPNVdocumentOrigin;它返回文件來源,比window.location更安全。
構建系統更改
- 已移除
--disable-rdf構建選項,該選項實際上使得無法成功構建。目前正在努力完全移除 RDF 支援,但目前 XUL 仍需要它才能執行。有關移除 RDF 必需的最後痕跡的進展,請參閱 Firefox bug 559505。 - 已移除
--disable-smil構建選項。