Firefox 5 開發者釋出說明
基於 Gecko 5.0 的 Firefox 5 於 2011 年 6 月 21 日釋出。本文提供了有關此版本中影響開發人員的更改的資訊連結。
Web 開發人員的變更
HTML
- 所有 HTML 元素現在都具有
accessKey屬性,以及blur()、click()和focus()方法。這些都在HTMLElement介面中指定。 - 為了遵守 HTML5 規範,已刪除對 UTF-7 和 UTF-32 字元集 的支援。
- 在怪異模式下,當匹配時,空的
<map>不再跳過,而是優先匹配非空元素。 - Android 上的 Firefox 移動版現在支援
@font-face的 WOFF 字型。 - 作為安全措施,WebGL 不再從原始域以外的域載入紋理。HTTP 訪問控制 支援將在未來的某個時候實現,以更安全地實現這一點。
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()時指定null或undefined影像現在會正確丟擲TYPE_MISMATCH_ERR異常。 - 為
globalAlpha指定無效值不再丟擲SYNTAX_ERR異常;這些現在會正確地被靜默忽略。 - 在呼叫
translate()、transform()、rect()、clearRect()、fillRect()、strokeRect()、lineTo()、moveTo()、quadraticCurveTo()或arc()時指定無效值不再丟擲異常;這些呼叫現在會正確地被靜默忽略。 - 將
shadowOffsetX、shadowOffsetY或shadowBlur的值設定為無效值現在會被靜默忽略。 - 將
rotate或scale的值設定為無效值現在會被靜默忽略。
CSS
- CSS 動畫
-
已新增對 CSS 動畫的支援,目前使用
-moz-字首。
DOM
Selection物件的modify()方法已更改,以便“word”選擇粒度不再包含尾隨空格;這使其在不同平臺之間更加一致,並與 WebKit 實現的行為匹配。setTimeout()和setTimeout()方法現在被限制在非活動選項卡中每秒傳送不超過一次超時。此外,它現在將巢狀超時限制為 HTML5 規範允許的最小值:4 毫秒(而不是以前限制的 10 毫秒)。- 類似地,
Window.setInterval()和WorkerGlobalScope.setInterval()方法現在在非活動選項卡中每秒限制為不超過一次間隔。 XMLHttpRequest現在支援用於進度監聽器的loadend事件。這在任何傳輸完成後傳送(即,在abort、error或load事件之後)。您可以使用它來處理無論傳輸成功或失敗都需要執行的任何任務。Blob以及由此擴充套件的File物件的slice()方法已被刪除,並替換為一種新的建議語法,使其與 JavaScript 中的Array.slice()和String.slice()方法更加一致。此方法目前名為mozSlice()。Navigator.language的值現在透過檢視Accept-LanguageHTTP 頭 的值來確定。- 根據 DOM 規範的要求,
Element.prefix屬性現在是隻讀的。 HTMLVideoElement現在支援實驗性屬性,以獲取有關影片渲染統計資訊(如幀率)的資訊。
JavaScript
- 正則表示式不再可像函式一樣呼叫;此更改已與 WebKit 團隊協同進行,以確保相容性(參見 WebKit bug 28285)。此功能已存在很長時間,但從未被記錄(至少在 MDC 上沒有)。
- 現在支援
Function.prototype.isGenerator()方法;這使您可以確定函式是否是生成器。 - 以下保留字 以前僅在嚴格模式下被視為保留;現在它們總是被視為保留:
class、enum、export、extends、import和super。 - 在 chrome 程式碼中建立的 DOM 文件不再能暴露給沙盒指令碼。
- JSON 解析器已重寫,以提高速度和合規性。這包括對 Firefox bug 572279 的修復。
SVG
classSVG 屬性現在可以動畫化。- 以下表示物件列表的 SVG 相關 DOM 介面現在可索引,並且可以像陣列一樣訪問;此外,它們具有指示列表中專案數量的
length屬性:SVGLengthList、SVGNumberList、SVGPathSegList和SVGPointList。
HTTP
- Firefox 不再發送
Keep-AliveHTTP 頭;我們沒有正確格式化它,而且它是多餘的,因為我們無論如何也傳送了帶有“keep-alive”值的Connection或Proxy-Connection頭。 - HTTP 事務模型已更新,使其在重用持久連線池中的連線方面更加智慧;Necko 不再將連線池視為 FIFO 佇列,而是嘗試將池中的連線按擁塞視窗 (CWND) 從大到小排序。這可以透過在許多情況下避免需要增大連線視窗來減少 HTTP 事務的往返時間 (RTT)。
- 如果同時提供了
filename和filename*引數,Firefox 現在可以更有效地處理Content-DispositionHTTP 響應頭;它會遍歷所有提供的名稱,如果存在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>元素的width和height屬性現在在 IDL 中反映為無符號整數而不是有符號整數(參見HTMLCanvasElement)。nsIAppStartup2和nsIAppStartup_MOZILLA_2_0介面已合併到nsIAppStartup介面中。nsIDocShell_MOZILLA_2_0_BRANCH介面已合併到nsIDocShell介面中。nsIFocusManager_MOZILLA_2_0_BRANCH介面已合併到nsIFocusManager介面中。nsIHTMLEditor_MOZILLA_2_0_BRANCH介面已合併到nsIHTMLEditor介面中。
新介面
- 添加了
nsIDOMAnimationEvent。AnimationEvent
已移除的介面
以下介面是不再需要的實現細節
nsICiter(參見 Firefox bug 633066)nsIDOM3Document(參見 Firefox bug 639849)nsIFIXptrEvaluatornsISelectElement(參見 Firefox bug 619996)
除錯輔助工具
- 新的
DebugOnly<T>輔助工具使僅為DEBUG構建宣告變數成為可能。
JavaScript API (SpiderMonkey)
- 已新增
JS_DoubleToInt32()和JS_DoubleToUint32(),用於將jsdouble值轉換為 C 整數和無符號整數。
構建系統更改
- 您現在可以在沒有
mozconfig檔案的情況下構建 Firefox;--enable-application設定 現在預設為“browser”。拉取或下載程式碼後,您可以configure && make(或make -f client.mk) 來構建 Firefox。