Firefox 4 開發者發行說明

Firefox 4 於 2011 年 3 月 22 日釋出,它增強了效能,增加了對 HTML5 和其他不斷發展的 Web 技術的支援,並進一步提高了安全性。本文提供了有關此版本的資訊,以及 Web 開發者、附加元件開發者和 Gecko 平臺開發者可用的功能。

面向 Web 開發者的功能

Gecko 現在使用 HTML5 解析器,這修復了錯誤,提高了互操作性,並提高了效能。它還允許內容直接在 HTML 標記中嵌入 SVGMathML

HTML

Web 表單

Web 表單的改進。這些更改包括在 <input> 元素中添加了輸入型別、資料驗證等。

HTML5 區塊

Gecko 現在支援與文件中的區塊相關的新 HTML5 元素:<article><section><nav><aside><hgroup><header><footer>

HTML5 隱藏屬性

此屬性適用於所有元素,用於隱藏網頁中當前與使用者無關的內容。

其他 HTML5 元素

Gecko 現在還支援以下新的 HTML5 元素:<mark><figure><figcaption>

WebSocket

使用新的 WebSockets API 實現 Web 應用程式和伺服器之間的即時通訊指南。請注意,Firefox 4 中實現的 WebSockets 與最終標準不相容,通常不應使用。

Canvas 改進

CanvasRenderingContext2D 介面進行了以下更改,以使我們的 <canvas> 實現更符合規範:

  • 在呼叫 arc() 時指定負半徑現在會正確丟擲 INDEX_SIZE_ERR 異常。
  • 在呼叫 createLinearGradient()createRadialGradient() 時指定非有限值現在會丟擲 NOT_SUPPORTED_ERR 而不是 SYNTAX_ERR
  • miterLimit 設定為負值不再丟擲異常;相反,它會正確忽略非正值。
  • lineWidth 設定為負值不再丟擲異常;相反,它會正確忽略非正值。
  • putImageData() 方法現在支援可選引數 dirtyXdirtyYdirtyWidthdirtyHeight

雜項 HTML 更改

  • <textarea> 元素現在預設可調整大小;您可以使用 resize CSS 屬性停用此功能。
  • canvas.getContextcanvas.toDataURL 在使用無法識別的引數呼叫時不再丟擲異常。
  • <canvas> 元素現在支援 Mozilla 特有的 mozGetAsFile() 方法,該方法允許您獲取包含 canvas 內容影像的記憶體檔案。有關詳細資訊,請參閱 HTMLCanvasElement
  • Canvas2DContext.lineCapCanvas2DContext.lineJoin 在設定為無法識別的值時不再丟擲異常。
  • Canvas2DContext.globalCompositeOperation 在設定為無法識別的值時不再丟擲異常,並且不再支援非標準 darker 值。
  • 對所有其他瀏覽器中不存在的已廢棄 <spacer> 元素的支援已移除。
  • <isindex> 元素在透過呼叫 Document.createElement() 建立時,現在被建立為一個不帶任何屬性或方法的簡單元素。
  • Gecko 現在支援對 <input> 元素呼叫 click() 以開啟檔案選擇器。請參閱文章 使用 Web 應用程式中的檔案 中的示例
  • <input> 元素支援新的 mozactionhint 屬性,該屬性允許您指定虛擬鍵盤上回車鍵的標籤。
  • <iframe><noembed><noframes> 元素內部的 <script> 元素現在會執行,而以前的 Firefox 版本中不會。這符合規範,並與其他瀏覽器的行為一致。

CSS

CSS 過渡

Firefox 4 中提供了新的 CSS 過渡支援。

CSS 中的計算值

已新增對 -moz-calc 的支援。這允許您將 <length> 值指定為數學表示式。

選擇器分組

支援 :-moz-any 以分組選擇器並分解組合器。

背景影像子矩形支援

-moz-image-rect() 函式使得可以使用影像的子矩形作為 background-image

CSS 觸控屬性

添加了對觸控屬性的支援。詳細資訊和真實文章名稱稍後提供。

使用任意元素作為 CSS 背景

您可以使用 -moz-element CSS 函式和 document.mozSetImageElement() DOM 函式將任意 HTML 元素用作背景。

隱私與 :visited 選擇器

已更改使用 CSS 選擇器可以獲取的有關已訪問連結樣式的資訊。這可能會影響某些 Web 應用程式。

新的 CSS 屬性

屬性 描述
-moz-font-feature-settings 允許您自定義 OpenType 字型的高階功能。
-moz-tab-size 指定渲染文字時製表符(U+0009)的空格字元寬度。
resize 允許您控制元素可調整大小的尺寸。

新的 CSS 偽類

偽類 描述
:-moz-handler-crashed 用於樣式化其外掛崩潰的元素。
:-moz-placeholder 應用於表單欄位中的佔位符文字。
:-moz-submit-invalid 應用於表單提交按鈕,當表單的一個或多個欄位未驗證時。
:-moz-window-inactive 應用於非活動視窗中的元素。
:invalid <input> 欄位的內容無效時自動應用。
:optional 自動應用於未指定 required 屬性的 <input> 欄位。
:required 自動應用於指定 required 屬性的 <input> 欄位。
:valid <input> 欄位的內容成功驗證時自動應用。

新的 CSS 偽選擇器

偽選擇器 描述
:-moz-focusring 允許您指定元素在 Gecko 認為應該渲染焦點指示時的外觀。

新的 CSS 函式

Function 描述
:-moz-any 允許您分組選擇器並分解組合器。
-moz-calc 允許您將 <length> 值指定為數學表示式。
-moz-element 允許您使用任意元素作為 background-imagebackground 的背景。
-moz-image-rect 允許您使用影像的子矩形作為 background-imagebackground

重新命名的 CSS 屬性

舊名稱 新名稱 注意
-moz-background-size background-size 不再支援 -moz-background-size 名稱。
-moz-border-radius border-radius 舊名稱在有限時間內受支援,以便您有時間更新您的站點。渲染也已更改以匹配最新版本的規範。
-moz-box-shadow box-shadow

雜項 CSS 更改

  • 出於合理性和效能原因,text-shadow 屬性現在將模糊半徑限制為 300px。
  • overflow 屬性不再適用於表格組元素(<thead><tbody><tfoot>)。
  • -moz-appearance 屬性現在支援 -moz-win-borderless-glass 值,該值將無邊框的 Aero Glass 外觀應用於元素。
  • 已新增 -moz-device-pixel-ratio 媒體特性,允許在 媒體查詢 中使用裝置畫素與 CSS 畫素的比率。
  • Gecko 對 CSS <length> 單位的處理已修訂,以更好地匹配其他瀏覽器,並根據裝置的 DPI 更準確地將絕對長度轉換為螢幕畫素計數。

圖形和影片

WebGL

Firefox 現在支援正在開發的 WebGL 標準。

支援 WebM 影片

Gecko 2.0 支援新的開放 WebM 影片格式。

使用 SMIL 的 SVG 動畫

現在支援 SVG 的 SMIL 動畫。

將 SVG 用作影像和 CSS 背景

您現在可以將 SVG 與 <img> 元素一起使用,也可以作為 CSS background-image 使用。

媒體 buffered 屬性支援

現在支援 <video><audio> 元素上的 buffered 屬性,允許您確定媒體檔案已緩衝的範圍。TimeRanges DOM 介面已實現以支援此功能。

媒體 preload 屬性

已實現 HTML5 規範中的 preload 屬性,取代了先前實現的(且不再支援的)autobuffer 屬性。這會影響 <video><audio> 元素,以及 nsIDOMHTMLMediaElement 介面。

SVG 文字定位改進

您現在可以為 SVG <text><tspan> 元素上的 xydxdy 屬性值指定列表。這允許您單獨控制字串中每個字元的定位。

DOM

JavaScript 型別化陣列

已新增對 JavaScript 型別化陣列的支援;這允許您使用本機資料型別操作包含原始資料的緩衝區。一些 API 使用此功能,包括 檔案 APIWebGLWebSockets

獲取範圍的邊界矩形

Range 物件現在具有 range.getClientRects()range.getBoundingClientRect() 方法。

在任意元素上捕獲滑鼠事件

已新增對源自 Internet Explorer 的 setCapture()releaseCapture() API 的支援。請參閱 Firefox 錯誤 503943

操作瀏覽器歷史記錄

透過 window.history 物件可用的現有文件歷史記錄物件現在支援新的 HTML5 pushState()replaceState() 方法。

使用 MozBeforePaint 的動畫

已新增一個新事件,該事件與 window.mozRequestAnimationFrame() 方法和 window.mozAnimationStartTime 屬性結合使用,提供了一種建立相互同步動畫的方法。

觸控和多點觸控事件

已新增對觸控和多點觸控事件的支援。

HTML 元素的 DOM 介面已更改

一些 HTML 元素的 DOM 介面已更改為 HTML5 規範要求的介面,如下所示。

Firefox 3.6 中的介面 Firefox 4 中的介面 HTML 元素
HTMLSpanElement HTMLElement <abbr><acronym><address><b><bdo><big><blink><center><cite><code><dd><dfn><dt><em><i><kbd><listing><nobr><plaintext><s><samp><small><strike><strong><sub><sup><tt><u><var><xmp>
HTMLDivElement HTMLElement <noembed><noframes><noscript>
HTMLWBRElement HTMLElement <wbr>

雜項 DOM 更改

安全

內容安全策略(CSP)

內容安全策略(CSP)是 Mozilla 提出的一項建議,旨在幫助 Web 設計師和伺服器管理員指定其網站內容的互動方式。目標是幫助檢測和緩解包括跨站指令碼和資料注入攻擊在內的攻擊。

HTTP 嚴格傳輸安全

HTTP 嚴格傳輸安全是一項安全功能,它允許網站告知瀏覽器只能使用 HTTPS 與其通訊,而不是使用 HTTP。

X-FRAME-OPTIONS 響應頭

Firefox 現在支援 Internet Explorer 8 中引入的 X-FRAME-OPTIONS HTTP 響應頭。這允許網站指示其頁面是否可以在框架中使用,如果可以,是否將其限制為同一來源。

使用者代理字串 更改

為了減少 HTTP 請求中傳送的資料量和熵(參見 Firefox 錯誤 572650),已從使用者代理字串中移除了加密強度和語言令牌。

JavaScript

有關 JavaScript 1.8.5 中實現更改的概述,請參閱 JavaScript 1.8.5 中的新功能。Firefox 4 中的 JavaScript 將進一步遵循 ECMAScript 5 標準。

開發者工具

使用 Web 控制檯

Web 控制檯工具是 Web 開發者和擴充套件開發者都非常有用的除錯輔助工具。

注意:從 Gecko 2.0 開始,錯誤控制檯預設停用。您可以透過將 devtools.errorconsole.enabled 首選項更改為 true 並重新啟動瀏覽器來重新啟用它。

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

有關為 Firefox 4 更新現有擴充套件的有用提示,請參閱 為 Firefox 4 更新擴充套件。有幾個關鍵更改會破壞與現有附加元件的相容性,因此請務必閱讀該文章。

如果您是主題開發者,您應該閱讀 Firefox 4 中的主題更改,以瞭解您需要注意的一些關鍵更改。

JavaScript 程式碼模組

Services.jsm

Services.jsm 程式碼模組提供 getter,可以輕鬆獲取對常用服務的引用,例如首選項服務或視窗協調器等。

JS-ctypes API

JS-ctypes API 使得無需使用 XPCOM 即可呼叫 C 相容的外部庫函式。

附加元件管理器

新的附加元件管理器提供有關已安裝附加元件的資訊、管理它們的支援,並提供安裝和刪除附加元件的方法。

PopupNotifications.jsm

新的彈出通知模組使得向用戶呈現美觀的非模態通知變得容易。您可以在 使用彈出通知 中瞭解如何使用此 API。

從 chrome: URLs 載入程式碼模組

您現在可以使用 chrome: URL 載入 JavaScript 程式碼模組,即使在 JAR 檔案中也是如此。

DownloadLastDir.jsm

DownloadLastDir.jsm 程式碼模組提供了 gDownloadLastDir 全域性變數,其中包含一個字串,您可以使用它來了解上次下載發生目錄的路徑。此模組為您處理與隱私瀏覽相關的問題。

使用 PerfMeasurement.jsm 程式碼模組測量效能

PerfMeasurement.jsm 程式碼模組提供了一個 API,用於測量 JavaScript 程式碼中的 CPU 級效能資料。

程式碼模組的雜項更改

  • NetUtil.jsm 程式碼模組現在提供了 readInputStreamToString() 方法,該方法允許您將流中的任意位元組讀取到字串中,即使流包含零。
  • XPCOMUtils.jsm 程式碼模組現在提供了 IterSimpleEnumerator() 和 IterStringEnumerator() 幫助器,用於迭代 XPCOM 列舉器。
  • 您現在可以在 JavaScript 程式碼模組中使用 workers

DOM 更改

ChromeWorker

一種用於特權程式碼的新型 worker;這允許您在擴充套件和應用程式程式碼中的 workers 中使用 js-ctypes 等功能。

觸控事件

已新增對(非標準)觸控事件的支援;這些事件允許您同時跟蹤觸控式螢幕上多個手指的移動。

其他 DOM 更改

XUL

tabbrowser 元素的更改

<xul:tabbrowser> 元素進行了幾項更改,這些更改會影響與選項卡互動的擴充套件。除了支援應用程式選項卡外,這些更改還將選項卡欄更改為標準工具欄,允許使用者將工具欄按鈕拖入其中。

  • TabCloseTabSelectTabOpen 事件不再冒泡到 <xul:tabbrowser> 元素 (gBrowser)。這些事件的事件監聽器應新增到 gBrowser.tabContainer,而不是直接新增到 gBrowser
  • 選項卡上下文選單不再是 <xul:tabbrowser> 的匿名子項。因此,可以直接使用 XUL 疊加層進行疊加。也可以透過 gBrowser.tabContextMenu 更直接地在 JavaScript 中訪問它。有關更多詳細資訊,請參閱這篇部落格文章
  • 添加了新的 visibleTabs 屬性,允許您獲取當前可見選項卡的陣列;這允許您確定當前選項卡集中哪些選項卡可見。例如,Firefox Panorama 使用此功能。
  • 添加了新的 showOnlyTheseTabs 方法;Firefox Panorama 使用此方法。
  • 添加了新的 getIcon 方法,該方法允許您獲取選項卡的 favicon,而無需拉出 <xul:browser> 元素。
  • 添加了新的 tabbrowser.tabs 屬性,該屬性允許您輕鬆獲取 <xul:tabbrowser> 元素中的選項卡列表。
  • 新的 pinTabunpinTab 方法允許您固定和取消固定選項卡(即,在應用程式選項卡和常規選項卡之間切換它們)。
  • 已將 getTabModalPromptBox 方法和 tabModalPromptShowing 屬性新增到 <xul:tabbrowser> 以支援選項卡模態警報。

彈出視窗的更改

  • 不再支援 <xul:popup> 元素;您應該改用 <xul:menupopup>。(如果您繼續使用 popup,您將遇到故障,因為該元素不再具有特殊含義。例如,當在 <xul:popup> 中使用時,<xul:menuseparator> 可能會顯示透明。)
  • <xul:menupopup> XUL 元素現在具有 triggerNode 屬性,該屬性指示發生事件的節點,該事件導致彈出視窗開啟。這還需要向 openPopup 方法新增一個觸發事件引數。此外,還添加了 anchorNode 屬性;它返回建立彈出視窗時指定的錨點。
  • <xul:panel> 元素現在提供 fadeflip 屬性,用於配置新“箭頭”樣式通知面板的行為。

遠端 XUL 支援已移除

不再支援遠端 XUL;這會影響透過 HTTP 提供的 XUL 文件;此外,您不能再使用 file:// URL 載入 XUL 文件,除非您建立首選項 dom.allow_XUL_XBL_for_file 並將其設定為 true。但是,有一個白名單功能可用於允許特定域載入遠端 XUL。

雜項 XUL 更改

  • readonly 屬性現在在 XBL 欄位中正確工作。
  • <xul:resizer> 元素現在允許您使用 element 屬性指定要調整大小的元素,而不是調整視窗大小。
  • <xul:resizer> 元素現在有一個 type 屬性,允許您指定 resizer 是用於視窗而不是元素,以防止視窗 resizer 被繪製兩次。
  • "active" 屬性不再在活動 XUL 視窗上設定。相反,您可以使用新的 :-moz-window-inactive 偽類為背景視窗分配不同的樣式。
  • emptytext 屬性現已廢棄;您應該改用 placeholder
  • <xul:window> 元素現在提供一個 accelerated 屬性;當為 true 時,允許硬體層管理器加速視窗。
  • <xul:stack> 元素現在支援 bottomright 屬性。
  • 事件現在在 <xul:toolbox> 自定義期間觸發,允許您檢測工具欄的更改。
  • 不再支援 <xul:tree> 元素的 alternatingbackground 屬性;您可以使用 :-moz-tree-row 偽類代替。
  • 帶有 anonid chevronPopup 的書籤工具欄溢位按鈕不再是匿名的;它的 ID 為 "PlacesChevron"。
  • <xul:tabs> 元素現在具有 tabbox 屬性,取代了舊的 _tabbox 屬性,該屬性已廢棄(且從未文件化)。
  • XUL <xul:window> 元素現在具有 drawintitlebar 屬性;如果為 true,則視窗的內容區域包含標題欄,允許在標題欄中繪製。
  • 提供了新的 TabPinnedTabUnpinned 事件,允許您檢測選項卡何時被固定和取消固定。
  • 當選項卡的 labelcropbusyimageselected 屬性更改時,會發送新的 TabAttrModified 事件。
  • <xul:tab> 元素現在具有 pinned 屬性,允許您確定選項卡當前是否已固定。
  • <xul:tree> 元素上的 setDirectionIndicator 類已有一段時間沒有執行任何操作;現在它完全不再使用。
  • <xul:window> 元素現在具有 chromemargin 屬性,允許您設定視窗兩側 chrome 和內容之間的邊距;例如,您可以使用它在標題欄中繪製。
  • <xul:window> 元素現在具有 disablechrome 屬性;當視窗用於顯示瀏覽器內 UI(例如 about:addons)時,它用於隱藏視窗的大部分 chrome。
  • <xul:window> 元素現在具有 disablefastfind 屬性,該屬性允許您在內容不支援快速查詢時停用視窗中的查詢欄。例如,附加元件面板使用此功能。
  • 工具欄現在可以獨立於工具箱,但仍被視為 <xul:toolbox> 的成員,透過設定 <xul:toolbar>toolboxid 屬性。此外,<xul:toolbox> 元素現在具有 externalToolbars 屬性,該屬性列出所有被視為工具箱成員的工具欄。
  • 已新增對出於除錯目的記錄 XUL 模板的支援。

影響開發者的 UI 更改

附加元件欄

狀態列已移除,取而代之的是新的附加元件欄。如果您過去一直將 UI 新增到狀態列,則需要更新您的擴充套件以使用此功能。

隱藏瀏覽器 Chrome

現在可以根據需要隱藏瀏覽器的 Chrome;例如,about:addons 就是這樣做的。

Storage

雜項儲存 API 更改

  • mozIStorageBindingParamsArray 介面現在具有一個 length 屬性,指示陣列中 mozIStorageBindingParams 物件的數量。
  • 如果指定的 mozIStorageBindingParamsArray 為空,mozIStorageStatement.bindParameters() 方法現在會返回錯誤。
  • 添加了 mozIStorageConnection.clone() 方法,該方法允許您克隆現有資料庫連線。
  • 添加了 mozIStorageConnection.asyncClose() 方法,該方法允許您非同步關閉資料庫連線;您指定一個回撥,以便在關閉操作完成時收到通知。
  • 添加了 mozIStorageConnection.setGrowthIncrement() 方法,該方法允許您指定資料庫檔案每次增長的數量,以幫助 SQLite 減少碎片。
  • SQLITE_CONSTRAINT 錯誤現在報告為 NS_ERROR_STORAGE_CONSTRAINT,而不是 NS_ERROR_FAILURE

XPCOM

除了下面引用的具體更改之外,重要的是要注意不再有任何凍結的介面。所有介面現在都是未凍結的,無論文件可能說什麼。我們將隨著時間的推移更新文件。

Gecko 2.0 中的 XPCOM 更改

有關影響 Firefox 4 相容性的 XPCOM 更改的詳細資訊。

Components.utils.getGlobalForObject()

此新方法返回與物件關聯的全域性物件;這取代了現在已移除的 __parent__ 的常見用例。

地點

  • 地點查詢結果現在可以被多個觀察者觀察,並且查詢可以非同步執行。這意味著 nsINavHistoryResultnsINavHistoryQueryOptionsnsINavHistoryContainerResultNode 介面發生了一些更改。更重要的是,nsINavHistoryResultViewer 介面已重新命名為 nsINavHistoryResultObserver
  • 已新增一些新通知,以使瀏覽器能夠更可靠地跟蹤 Places 服務的關閉過程。其中,大多數僅供內部使用,但 places-connection-closed 通知可用於瞭解 Places 服務何時完成其關閉過程。
  • 一些 Places 方法上的陣列大小輸出引數現在是可選的。
  • 已移除對 <menupopup type="places"> 的支援。相反,您需要手動建立和填充包含 Places 資訊的選單,而不是讓它為您完成。有關詳細資訊,請參閱 使用檢視顯示 Places 資訊:選單檢視

介面更改

  • nsIDocShellnsIWebBrowser 介面現在有一個新的 isActive 屬性,用於最佳化當前不可見文件的程式碼路徑。
  • nsIMemory 方法 nsIMemory.isLowMemory() 已廢棄。您應該改用“記憶體壓力”通知來監視低記憶體情況。
  • HTTP 通道上的重定向處理 API 已更改,以允許非同步處理。任何使用 nsIChannelEventSink.onChannelRedirect() 實現重定向處理的程式碼都需要更新為改用 nsIChannelEventSink.asyncOnChannelRedirect()。這接受一個回撥處理程式,該處理程式必須在重定向成功完成時呼叫。
  • 已新增 nsINavHistoryResultObserver.batching() 方法,提供了一種將 Places 操作分組到批次中的方法,從而減少了傳送的更新通知數量,這可以在觀察者執行相對複雜的任務(例如重新整理檢視)時提高效能。
  • 長期廢棄的 nsIPref 介面最終已被移除。如果您尚未切換到 nsIPrefService,現在是時候了。
  • nsISessionStorensISessionStartup 介面已進行更改以支援按需會話恢復。請參閱 nsISessionStore.restoreLastSession() 方法。
  • nsIPrincipal 方法 nsIPrincipal.subsumes()nsIPrincipal.checkMayLoad(),以及它的 origincspURI 屬性,現在可以從指令碼中訪問;以前它們只能從本機程式碼中訪問。
  • nsIPrompt 介面現在支援選項卡模態警報;有關詳細資訊,請參閱 使用選項卡模態提示
  • nsIEffectiveTLDService.getPublicSuffixFromHost() 方法現在正確拒絕以句點(“.”)開頭的主機名。
  • mozIJSSubScriptLoader.loadSubScript() 方法現在有一個可選引數,允許您指定指令碼的字元集;如果未提供,則假定為 ASCII(與以前始終假定的一樣)。
  • nsIAccessProxy 介面已被移除。它是一個已失去其有用性的實現細節。
  • 已為 Firefox Mobile 新增 nsIContentViewnsIContentViewManager 介面。它表示一個可滾動的內容檢視,其內容實際上由單獨的程序繪製。
  • 已新增 nsIDiskCacheStreamInternal 介面。
  • 已新增 nsIExternalURLHandlerService 介面。
  • 已新增 nsISyncJPAKE 介面。請參閱 Firefox 錯誤 601645
  • Gecko 1.9.2.4 中添加了 nsIINIParserWriter 介面,以支援寫入 INI 檔案。

記憶體管理

絕對不會失敗的記憶體分配

Mozilla 現在提供了保證不會返回 null 的絕對不會失敗的記憶體分配器。您應該閱讀本文以瞭解它們的工作原理以及如何顯式請求可能失敗和絕對不會失敗的記憶體分配。

其他更改

  • Firefox 中包含的大多數資源已合併到一個 JAR 存檔 omni.jar 中,透過減少 I/O 提高了啟動效能。有關詳細資訊,請閱讀 關於 omni.jar
  • 不再支援 accessibility.disablecache 首選項;它僅用於除錯目的,不再使用。
  • GUID 從一個版本更改為另一個版本的附加元件現在可以正確更新。
  • 由於移除了附加元件包中特定於平臺的目錄,您不再能為每個平臺提供不同的預設首選項。
  • 預設情況下,擴充套件在安裝時不再解包,而是直接從 XPI 檔案執行。擴充套件可以使用 安裝清單 中的 unpack 屬性選擇舊行為。使用二進位制元件、使用 js-ctypes 載入的 DLL、搜尋外掛、字典和視窗圖示的擴充套件必須指定它們需要解包。建立 SQLite 資料庫,或相對於擴充套件目錄從檔案系統複製內容的擴充套件,也可能需要更改其程式碼。
  • 您現在可以在自定義的 Firefox 中包含在應用程式啟動時自動安裝的擴充套件。

其他更改

僅載入根 chrome.manifest 檔案

現在只加載根 chrome.manifest 檔案;如果您需要載入輔助清單檔案,可以使用根 chrome.manifest 中的 manifest 命令載入它們。

Gopher 支援已移除

Gopher 協議不再原生支援。透過 OverbiteFF 擴充套件仍可繼續獲得支援。

內容程序事件處理

為了支援程序外外掛和其他多程序功能,引入了一個新的 API 來支援跨程序傳送訊息。

自舉擴充套件

您現在可以建立無需瀏覽器重啟即可安裝、解除安裝、升級(或降級)的擴充套件。

預設外掛已移除

預設外掛已移除。應用程式外掛資料夾也已預設移除,但透過此資料夾安裝外掛的支援仍然存在。請參閱 Firefox 錯誤 533891

擴充套件管理器被附加元件管理器取代

nsIExtensionManager 已被 AddonManager 取代。

不再使用子 HWND

Firefox 不再在 Windows 上為其內部使用建立子 HWND。如果您編寫了使用本機程式碼操作這些 HWND 的擴充套件,則您的擴充套件在 Firefox 4 上將無法工作。您需要停止使用 HWND 或將依賴 HWND 的程式碼包裝在 NPAPI 外掛中。這需要大量工作,因此如果您能避免直接使用 HWND,您就應該避免。

手勢更改

觸控板上的三指向上和向下輕掃手勢已更改為預設開啟和關閉 Firefox 全景檢視(以前稱為 TabCandy)。要將其更改回之前的滾動到頂部和滾動到底部命令,請開啟 about:config 並將 browser.gesture.swipe.down 設定為 cmd_scrollBottom,將 browser.gesture.swipe.up 設定為 cmd_scrollTop