適用於開發者的 Firefox 7 發行說明
Firefox 7 於 2011 年 9 月 27 日釋出。本文提供了影響開發者(包括 Web 內容開發者和 Firefox 附加元件開發者)的變更資訊。
Web 開發人員的變更
HTML
- 已移除
HTMLHeadElement的profile屬性,該屬性自 Gecko 2.0 起已被棄用。 - 已移除
HTMLImageElement的x和y屬性。 HTMLSelectElement的add()方法中的before引數現在是可選的。<body>元素的background屬性不再被解析為 URI;這符合當前的 HTML 規範。- 如果未指定
<option>元素的label屬性,則該屬性現在會反映元素的文字內容值。
Canvas
- 作為 Azure 專案的一部分,Direct2D Azure 後端 已實現,這將顯著提高 2D Canvas 的效能。
- 在呼叫
setTransform()、bezierCurveTo()或arcTo()時指定無效值不再丟擲異常;這些呼叫現在會被正確地靜默忽略。 isPointInPath()方法在將指定點與當前路徑進行比較時,現在會正確考慮變換矩陣。- 呼叫
strokeRect()時寬度和高度為零,現在會正確地不執行任何操作。 - 呼叫
drawImage()時,如果<canvas>的寬度或高度為零,現在會丟擲INVALID_STATE_ERR。 - 呼叫
drawImage()時使用非有限座標,不再丟擲異常。 toDataURL()方法現在接受第二個引數來控制 JPEG 質量。- 已移除對非標準
globalCompositeOperation操作clear和over的支援。 - 陰影現在只為
source-over合成操作繪製。 - 您現在可以透過設定上下文上的
mozFillRule屬性來配置 Canvas 使用的填充規則。 - 已新增對實驗性
mozDash、mozDashOffset、mozCurrentTransform和mozCurrentTransformInverse屬性的支援。 - 已移除對非標準方法
mozDrawText()、mozMeasureText()、mozPathText()和mozTextAlongPath()的支援。
CSS
- 現在支援
text-overflow。 -moz-orient屬性已修復,以便垂直方向的<progress>元素具有適當的預設尺寸。
MathML
DOM
- 已移除
File介面的非標準方法getAsBinary()、getAsDataURL()和getAsText(),以及非標準屬性fileName和fileSize(Firefox bug 661876)。 - 當使用
Blob設定資料時,FormData介面在傳送Content-DispositionHTTP 頭時不再將檔名報告為空字串。這修復了某些伺服器上發生的錯誤。 HTMLelement.dir屬性現在始終以全小寫形式返回其結果,符合 HTML 規範要求。- 現在已實現
FileReader的readAsArrayBuffer()方法。 Document.createEntityReference已移除。它從未正確實現,並且在大多數其他瀏覽器中也未實現。document.normalizeDocument已移除。請改用Node.normalize。- 如果
index超出範圍,DOMTokenList.item現在返回undefined,之前它返回null。 Node.getFeature已移除。HTMLInsElement和HTMLDelElement介面已移除,因為<ins>和<del>元素實際上使用HTMLModElement介面。- 為了符合即將釋出的 DOM4 規範(其中
Attr不再繼承自Node,它在 DOM Core 1、2 和 3 中繼承),Attr介面上的許多Node屬性和方法現在會報告警告,我們正在努力在後續版本中移除它們。 - 在
window物件上添加了對ondeviceorientation和ondevicemotion屬性的支援。 window.resizeTo、window.resizeBy、window.moveTo和window.moveBy不再適用於主視窗。
JavaScript
Function.arity屬性已移除;請改用Function.length。
WebSocket
network.websocket.max-connections首選項用於確定可以同時開啟的最大 WebSocket 連線數。預設值為 200。- 現在使用底層 WebSocket 協議版本 8(由 IETF 草案 10 指定),而不是 Firefox 6 使用的版本 7 協議。
- WebSocket API 現在可在 Firefox Mobile 上使用。
控制檯 API
- 當 Web 控制檯未開啟時,使用
console.log記錄的訊息仍然會記錄,儘管在 Web 控制檯開啟時它們不會顯示。
Web 計時
- 導航計時規範的初始實現,它提供了可用於測量網站效能的資料。
XML
- 除了之前支援的
text/xsl,XSLT 樣式表現在可以使用官方的網際網路媒體 (MIME) 型別application/xslt+xml(在樣式表處理指令或HTTP Link 頭欄位中)。
Mozilla 和附加元件開發者的更改
這些更改會影響附加元件開發者以及從事或使用 Mozilla 程式碼本身的開發者。附加元件開發者應參閱 更新 Firefox 7 附加元件以獲取更多資訊。
注意: Firefox 7 要求重新編譯二進位制元件,所有主要的 Firefox 版本都是如此。
JavaScript 程式碼模組
FileUtils.jsm
- 新方法
openFileOutputStream()開啟一個檔案輸出流,即非安全變體,用於寫入。
AddonManager.jsm
- 附加元件管理器新增了用於管理應用程式啟動期間更改的附加元件列表的方法:
AddonManager.addStartupChange()、AddonManager.removeStartupChange()和AddonManager.getStartupChanges()。
XUL
- 如果
datasources引用的節點都具有由“id”屬性指定的唯一 ID,則<tree>元素現在可以保留展開/摺疊三角的狀態。 <panel>元素現在可以使用新的backdrag屬性進行配置,允許使用者透過單擊其背景的任何位置來拖動它們。
XPCOM
- 新的
Components.utils.schedulePreciseGC()方法允許您在未來某個沒有 JavaScript 程式碼執行的時間點排程一個徹底的垃圾回收週期;回收完成後會執行一個回撥。 Components.utils.unload()方法允許您解除安裝之前透過呼叫Components.utils.load()載入的 JavaScript 程式碼模組。
記憶體報告器
已新增對多報告器的支援;即,按請求收集資料併為每個生成的結果呼叫回撥的記憶體報告器。請參閱 nsIMemoryMultiReporter 和 nsIMemoryMultiReporterCallback 以瞭解相關介面,以及 nsIMemoryReporterManager.registerMultiReporter() 和 nsIMemoryReporterManager.unregisterMultiReporter() 方法。
使用者體驗變化
- 現在可以在附加元件管理器中顯示無重啟和傳統擴充套件的擴充套件選項。
- 現在按站點記住下載目的地。此資料可以使用
DownloadLastDir.jsm訪問。
構建系統的變化
- 不再構建 ActiveX 嵌入 API,並且已從構建系統中移除支援。支援介面也已移除;請參閱已移除的介面。
- 在 Windows 上構建時,您不應再指定
-Zc:wchar_t-。
介面更改
nsISocketTransport現在提供了一個新的連線標誌:DISABLE_IPV6;這導致套接字只嘗試連線到 IPv4 地址,忽略任何可用的 IPv6 地址。此外,nsIDNSService現在提供了一個新的解析標誌:RESOLVE_DISABLE_IPV6;這導致域名解析只考慮 IPv4 主機,忽略任何可用的 IPv6 地址。這些更改用於實現“happy eyeballs”策略,以提高在支援 IPv4 和 IPv6 的主機(特別是那些 IPv6 連線損壞的主機)上嘗試連線時的響應時間。inIDOMUtils有兩個新方法,inIDOMUtils.getChildrenForNode()返回節點的子節點列表,inIDOMUtils.getUsedFontFaces()返回範圍內使用的字型列表。nsIMarkupDocumentViewer_MOZILLA_2_0_BRANCH介面已合併到nsIMarkupDocumentViewer介面中。nsIDOMWindow2介面已合併到nsIDOMWindow介面中。nsIDOMWindow_2_0_BRANCH介面已合併到nsIDOMWindowInternal介面中。- 帶有 URI 引數的
nsINavHistoryObserver方法現在也需要 GUID。 nsISHistory_2_0_BRANCH介面已合併到nsISHistory介面中。nsITelemetry有一個新方法nsITelemetry.getHistogramById(),它透過 ID 返回直方圖,還有一個新屬性canRecord,當設定為false時,停用遙測統計資料的記錄。在隱私瀏覽模式下不再記錄遙測統計資料。(參見Firefox bug 661574和Firefox bug 661573)使用nsITelemetry.newHistogram()定義的遙測直方圖將不會在遙測 ping 中報告。nsIMemoryReporter介面已大幅更改;如果您使用它,您將需要對您的程式碼進行一些調整。nsIXMLHttpRequest中,透過nsIXMLHttpRequest.setRequestHeader()設定的頭在重定向時會隨請求傳送。之前這些頭不會發送。nsIDocShell有一個新屬性allowWindowControl。如果為true,則允許 docshell 的內容控制視窗(即移動或調整視窗大小)。nsIThreadInternal2介面已合併到nsIThreadInternal介面中。
新介面
nsIDOMFontFace-
描述單個字型。
nsIDOMFontFaceList-
描述字型列表,每個字型由
nsIDOMFontFace表示。
已移除的介面
以下介面是不再需要的實現細節
nsIDOM3AttrnsIDOM3NodensIDOM3TypeInfonsIDOM3TextnsIDOMDocumentStylensIDOMNSDocumentnsIDOMNSFeatureFactorynsIDOMNSHTMLDocumentnsIDOMNSHTMLFormElementnsIDOMNSHTMLHRElementnsIDOMNSHTMLTextAreaElement
以下介面作為 ActiveX 嵌入 API 移除的一部分而被移除
DITestScriptHelperDWebBrowserEventsDWebBrowserEvents2IDispatchIMozControlBridgeIMozPluginHostCtrlIWebBrowserIWebBrowser2IWebBrowserAppIXMLDocumentIXMLElementIXMLElementCollectionIXMLErrornsIActiveXSecurityPolicynsIDispatchSupportnsIMozAxPluginnsIScriptEventHandlernsIScriptEventManager