適用於開發者的 Firefox 7 發行說明

Firefox 7 於 2011 年 9 月 27 日釋出。本文提供了影響開發者(包括 Web 內容開發者和 Firefox 附加元件開發者)的變更資訊。

Web 開發人員的變更

HTML

  • 已移除 HTMLHeadElementprofile 屬性,該屬性自 Gecko 2.0 起已被棄用。
  • 已移除 HTMLImageElementxy 屬性。
  • HTMLSelectElementadd() 方法中的 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 操作 clearover 的支援。
  • 陰影現在只為 source-over 合成操作繪製。
  • 您現在可以透過設定上下文上的 mozFillRule 屬性來配置 Canvas 使用的填充規則。
  • 已新增對實驗性 mozDashmozDashOffsetmozCurrentTransformmozCurrentTransformInverse 屬性的支援。
  • 已移除對非標準方法 mozDrawText()mozMeasureText()mozPathText()mozTextAlongPath() 的支援。

CSS

MathML

  • XLink href 已恢復,並且現在支援 MathML3 的 href 屬性。鼓勵開發者轉向後一種語法。
  • 已新增對 <mpadded> 元素上的 voffset 屬性的支援,並修復了 lspace 屬性的行為。
  • 頂級 <math> 元素現在接受 <mstyle> 元素的任何屬性。
  • 已新增對 Asana Math 字型的支援。
  • <mfrac> 元素中分數線的中等粗細已糾正以匹配預設粗細。
  • 現在支援負空間名稱

DOM

  • 已移除 File 介面的非標準方法 getAsBinary()getAsDataURL()getAsText(),以及非標準屬性 fileNamefileSizeFirefox bug 661876)。
  • 當使用 Blob 設定資料時,FormData 介面在傳送 Content-Disposition HTTP 頭時不再將檔名報告為空字串。這修復了某些伺服器上發生的錯誤。
  • HTMLelement.dir 屬性現在始終以全小寫形式返回其結果,符合 HTML 規範要求。
  • 現在已實現 FileReaderreadAsArrayBuffer() 方法。
  • Document.createEntityReference 已移除。它從未正確實現,並且在大多數其他瀏覽器中也未實現。
  • document.normalizeDocument 已移除。請改用 Node.normalize
  • 如果 index 超出範圍,DOMTokenList.item 現在返回 undefined,之前它返回 null
  • Node.getFeature 已移除。
  • HTMLInsElementHTMLDelElement 介面已移除,因為 <ins><del> 元素實際上使用 HTMLModElement 介面。
  • 為了符合即將釋出的 DOM4 規範(其中 Attr 不再繼承自 Node,它在 DOM Core 1、2 和 3 中繼承),Attr 介面上的許多 Node 屬性和方法現在會報告警告,我們正在努力在後續版本中移除它們。
  • window 物件上添加了對 ondeviceorientationondevicemotion 屬性的支援。
  • window.resizeTowindow.resizeBywindow.moveTowindow.moveBy 不再適用於主視窗。

JavaScript

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

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 程式碼模組。

記憶體報告器

已新增對多報告器的支援;即,按請求收集資料併為每個生成的結果呼叫回撥的記憶體報告器。請參閱 nsIMemoryMultiReporternsIMemoryMultiReporterCallback 以瞭解相關介面,以及 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 661574Firefox bug 661573)使用 nsITelemetry.newHistogram() 定義的遙測直方圖將不會在遙測 ping 中報告。
  • nsIMemoryReporter 介面已大幅更改;如果您使用它,您將需要對您的程式碼進行一些調整。
  • nsIXMLHttpRequest 中,透過 nsIXMLHttpRequest.setRequestHeader() 設定的頭在重定向時會隨請求傳送。之前這些頭不會發送。
  • nsIDocShell 有一個新屬性 allowWindowControl。如果為 true,則允許 docshell 的內容控制視窗(即移動或調整視窗大小)。
  • nsIThreadInternal2 介面已合併到 nsIThreadInternal 介面中。

新介面

nsIDOMFontFace

描述單個字型。

nsIDOMFontFaceList

描述字型列表,每個字型由 nsIDOMFontFace 表示。

已移除的介面

以下介面是不再需要的實現細節

  • nsIDOM3Attr
  • nsIDOM3Node
  • nsIDOM3TypeInfo
  • nsIDOM3Text
  • nsIDOMDocumentStyle
  • nsIDOMNSDocument
  • nsIDOMNSFeatureFactory
  • nsIDOMNSHTMLDocument
  • nsIDOMNSHTMLFormElement
  • nsIDOMNSHTMLHRElement
  • nsIDOMNSHTMLTextAreaElement

以下介面作為 ActiveX 嵌入 API 移除的一部分而被移除

  • DITestScriptHelper
  • DWebBrowserEvents
  • DWebBrowserEvents2
  • IDispatch
  • IMozControlBridge
  • IMozPluginHostCtrl
  • IWebBrowser
  • IWebBrowser2
  • IWebBrowserApp
  • IXMLDocument
  • IXMLElement
  • IXMLElementCollection
  • IXMLError
  • nsIActiveXSecurityPolicy
  • nsIDispatchSupport
  • nsIMozAxPlugin
  • nsIScriptEventHandler
  • nsIScriptEventManager

其他變化

  • 庫視窗(places.xul)的結構已清理。這可能會破壞擴充套件和主題。
  • 列印預覽視窗的外觀已現代化,鼓勵主題作者使用 CSS 偽元素 ::-moz-page::-moz-page-sequence::-moz-scrolled-page-sequence 來對其進行樣式設定。