Firefox 5 開發者釋出說明

基於 Gecko 5.0 的 Firefox 5 於 2011 年 6 月 21 日釋出。本文提供了有關此版本中影響開發人員的更改的資訊連結。

Web 開發人員的變更

HTML

Canvas 改進

  • <canvas> 2D 繪圖上下文現在支援將 ImageData 物件指定為 createImageData() 方法的輸入;這會建立一個新的 ImageData 物件,其尺寸與指定的物件相同,但所有畫素仍預設為透明黑色。這已記錄為已實現但尚未實現。
  • 透過呼叫 CanvasGradient 方法 addColorStop() 新增顏色停止時指定非有限值,現在會正確丟擲 INDEX_SIZE_ERR 而不是 SYNTAX_ERR
  • HTMLCanvasElement 方法 toDataURL() 現在在匹配之前會正確地將指定的 MIME 型別轉換為小寫。
  • getImageData() 現在正確接受超出畫布邊界的矩形;畫布外的畫素將返回為透明黑色。
  • drawImage()createImageData() 現在根據規範處理負引數,透過圍繞適當的軸翻轉矩形。我們需要一篇關於 CSS 大小調整 及其工作原理的文章。
  • 在呼叫 createImageData() 時指定非有限值現在會正確丟擲 NOT_SUPPORTED_ERR 異常。
  • 如果指定的矩形小於一個畫素,createImageData()getImageData() 現在會正確返回至少一個畫素的影像資料。
  • 在呼叫 createRadialGradient() 時指定負半徑現在會正確丟擲 INDEX_SIZE_ERR
  • 在呼叫 createPattern()drawImage() 時指定 nullundefined 影像現在會正確丟擲 TYPE_MISMATCH_ERR 異常。
  • globalAlpha 指定無效值不再丟擲 SYNTAX_ERR 異常;這些現在會正確地被靜默忽略。
  • 在呼叫 translate()transform()rect()clearRect()fillRect()strokeRect()lineTo()moveTo()quadraticCurveTo()arc() 時指定無效值不再丟擲異常;這些呼叫現在會正確地被靜默忽略。
  • shadowOffsetXshadowOffsetYshadowBlur 的值設定為無效值現在會被靜默忽略。
  • rotatescale 的值設定為無效值現在會被靜默忽略。

CSS

CSS 動畫

已新增對 CSS 動畫的支援,目前使用 -moz- 字首。

DOM

  • Selection 物件的 modify() 方法已更改,以便“word”選擇粒度不再包含尾隨空格;這使其在不同平臺之間更加一致,並與 WebKit 實現的行為匹配。
  • setTimeout()setTimeout() 方法現在被限制在非活動選項卡中每秒傳送不超過一次超時。此外,它現在將巢狀超時限制為 HTML5 規範允許的最小值:4 毫秒(而不是以前限制的 10 毫秒)。
  • 類似地,Window.setInterval()WorkerGlobalScope.setInterval() 方法現在在非活動選項卡中每秒限制為不超過一次間隔。
  • XMLHttpRequest 現在支援用於進度監聽器的 loadend 事件。這在任何傳輸完成後傳送(即,在 aborterrorload 事件之後)。您可以使用它來處理無論傳輸成功或失敗都需要執行的任何任務。
  • Blob 以及由此擴充套件的 File 物件的 slice() 方法已被刪除,並替換為一種新的建議語法,使其與 JavaScript 中的 Array.slice()String.slice() 方法更加一致。此方法目前名為 mozSlice()
  • Navigator.language 的值現在透過檢視 Accept-Language HTTP 頭 的值來確定。
  • 根據 DOM 規範的要求,Element.prefix 屬性現在是隻讀的。
  • HTMLVideoElement 現在支援實驗性屬性,以獲取有關影片渲染統計資訊(如幀率)的資訊。

JavaScript

  • 正則表示式不再可像函式一樣呼叫;此更改已與 WebKit 團隊協同進行,以確保相容性(參見 WebKit bug 28285)。此功能已存在很長時間,但從未被記錄(至少在 MDC 上沒有)。
  • 現在支援 Function.prototype.isGenerator() 方法;這使您可以確定函式是否是生成器
  • 以下保留字 以前僅在嚴格模式下被視為保留;現在它們總是被視為保留:classenumexportextendsimportsuper
  • 在 chrome 程式碼中建立的 DOM 文件不再能暴露給沙盒指令碼。
  • JSON 解析器已重寫,以提高速度和合規性。這包括對 Firefox bug 572279 的修復。

SVG

  • class SVG 屬性現在可以動畫化。
  • 以下表示物件列表的 SVG 相關 DOM 介面現在可索引,並且可以像陣列一樣訪問;此外,它們具有指示列表中專案數量的 length 屬性:SVGLengthListSVGNumberListSVGPathSegListSVGPointList

HTTP

  • Firefox 不再發送 Keep-Alive HTTP 頭;我們沒有正確格式化它,而且它是多餘的,因為我們無論如何也傳送了帶有“keep-alive”值的 ConnectionProxy-Connection 頭。
  • HTTP 事務模型已更新,使其在重用持久連線池中的連線方面更加智慧;Necko 不再將連線池視為 FIFO 佇列,而是嘗試將池中的連線按擁塞視窗 (CWND) 從大到小排序。這可以透過在許多情況下避免需要增大連線視窗來減少 HTTP 事務的往返時間 (RTT)。
  • 如果同時提供了 filenamefilename* 引數,Firefox 現在可以更有效地處理 Content-Disposition HTTP 響應頭;它會遍歷所有提供的名稱,如果存在 filename* 引數,即使 filename 引數首先包含,也會使用它。以前,會使用第一個匹配的引數,從而阻止使用更合適的名稱。參見 Firefox bug 588781

MathML

開發者工具

  • Web 控制檯的 Console 物件現在有一個 debug() 方法,它是其 log() 方法的別名;這提高了與某些現有站點的相容性。

Mozilla 和附加元件開發者的更改

有關為 Firefox 5 更新附加元件的指南,請參閱為 Firefox 5 更新附加元件

注意: Firefox 5 要求重新編譯二進位制元件,所有主要的 Firefox 版本都是如此。有關詳細資訊,請參閱 二進位制介面

JavaScript 程式碼模組的更改

新的 JavaScript 程式碼模組

  • 添加了 Dict.jsm 程式碼模組;它提供了用於鍵/值對字典的 API。

NetUtil.jsm

  • asyncFetch() 方法現在支援將輸入源指定為 nsIInputStream

介面更改

  • nsIHttpChannelInternal 介面具有新的屬性,可提供訪問通道端點地址和埠的資訊。此資訊主要用於除錯目的。
  • <canvas> 元素的 widthheight 屬性現在在 IDL 中反映為無符號整數而不是有符號整數(參見 HTMLCanvasElement)。
  • nsIAppStartup2nsIAppStartup_MOZILLA_2_0 介面已合併到 nsIAppStartup 介面中。
  • nsIDocShell_MOZILLA_2_0_BRANCH 介面已合併到 nsIDocShell 介面中。
  • nsIFocusManager_MOZILLA_2_0_BRANCH 介面已合併到 nsIFocusManager 介面中。
  • nsIHTMLEditor_MOZILLA_2_0_BRANCH 介面已合併到 nsIHTMLEditor 介面中。

新介面

已移除的介面

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

除錯輔助工具

  • 新的 DebugOnly<T> 輔助工具使僅為 DEBUG 構建宣告變數成為可能。

JavaScript API (SpiderMonkey)

構建系統更改

  • 您現在可以在沒有 mozconfig 檔案的情況下構建 Firefox;--enable-application 設定 現在預設為“browser”。拉取或下載程式碼後,您可以 configure && make (或 make -f client.mk) 來構建 Firefox。