Firefox 4 开发者版

Firefox 4 于 2011 年 3 月 22 日发布,增强了性能,增加了对 HTML5 和其他不断发展的网页技术的更多支持,并进一步提高了安全性。本文提供有关此版本的信息,以及针对网页开发者、附加组件开发者和 Gecko 平台开发者等的功能。

针对网页开发者的功能

Gecko 现在使用 HTML5 解析器,该解析器修复了错误,提高了互操作性,并提高了性能。它还允许内容将 SVGMathML 直接嵌入 HTML 标记中。

HTML

认识 HTML5 解析器

了解 HTML5 解析器对您的意义,以及如何将 SVG 和 MathML 内联嵌入到您的内容中。

HTML5 中的表单

了解网页表单的改进。这些变更包括在 <input> 元素中添加了输入类型,数据验证等等。

HTML5 部分

Gecko 现在支持与文档中部分相关的新 HTML5 元素:<article><section><nav><aside><hgroup><header><footer>

HTML5 hidden 属性

此属性对所有元素通用,用于隐藏网页中当前与用户无关的内容。

其他 HTML5 元素

Gecko 现在还支持以下新的 HTML5 元素:<mark><figure><figcaption>

WebSocket

使用新的 WebSocket API 进行网页应用程序与服务器之间实时通信的指南。请注意,Firefox 4 中实现的 WebSocket 与最终标准不兼容,一般不应使用。

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() 方法,该方法允许您获取一个包含画布内容图像的基于内存的文件。有关详细信息,请参阅 HTMLCanvasElement
  • canvas2dcontext.lineCapcanvas2dcontext.lineJoin 在设置为无法识别的值时不再抛出异常。
  • canvas2dcontext.globalCompositeOperation 在设置为无法识别的值时不再抛出异常,并且不再支持非标准的 darker 值。
  • 已删除对已废弃的 <spacer> 元素的支持,该元素在所有其他浏览器中都不存在。
  • <isindex> 元素(通过调用 document.createElement() 创建)现在被创建为一个没有属性或方法的简单元素。 有关此方面的文档尚未编写;请考虑贡献!
  • Gecko 现在支持对 <input> 元素调用 click() 来打开文件选择器。请参阅文章 使用网页应用程序中的文件 中的 示例
  • <input> 元素支持一个新的 mozactionhint 属性,该属性允许您指定虚拟键盘上 Enter 键的标签。
  • <script> 元素位于 <iframe><noembed><noframes> 元素内部时,现在会执行,而在 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 选择器可以获取的有关访问链接的样式的信息进行了更改。这可能会影响某些网页应用程序。

新的 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 函数

函数 描述
:-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 标准。

优化图形性能

在 Firefox 4 中充分发挥图形和视频性能的技巧和窍门。

支持 WebM 视频

Gecko 2.0 支持新的开放式 WebM 视频格式。

使用 SMIL 的 SVG 动画

现在可以使用 SMIL 动画 SVG。

使用 SVG 作为图像和 CSS 背景

现在可以使用 <img> 元素以及 CSS background-image 使用 SVG。

媒体 buffered 属性支持

现在支持 <video><audio> 元素的 buffered 属性,允许您确定媒体文件的哪些范围已缓冲。已经实现了 TimeRanges DOM 接口来支持此功能。

媒体 preload 属性

已经实现了 HTML5 规范中的 preload 属性,取代了以前实现的(不再支持的)autobuffer 属性。这会影响 <video><audio> 元素以及 nsIDOMHTMLMediaElement 接口。

SVG 文本定位改进

现在可以为 SVG <text><tspan> 元素的 xydxdy 属性的值指定列表。这允许您单独控制字符串中每个字符的定位。

DOM

JavaScript 类型化数组

已添加对 JavaScript 类型化数组的支持;这允许您使用原生数据类型操作包含原始数据的缓冲区。包括 File APIWebGLWebSockets 在内的多个 API 使用此功能。

获取范围的边界矩形

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 响应头

在 Internet Explorer 8 中引入的 X-FRAME-OPTIONS HTTP 响应头现在已得到 Firefox 的支持。这允许网站指示其页面是否可以用于框架,以及如果可以,是否限制为同一来源。

用户代理字符串 更改

为了减少 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 代码模块提供获取器,使您可以轻松地获取对常用服务的引用,例如首选项服务或窗口中介器,等等。

JS-ctypes API

JS-ctypes API 使您能够调用与 C 兼容的外部库函数,而无需使用 XPCOM。

附加组件管理器

新的附加组件管理器提供有关已安装附加组件的信息,支持管理它们,并提供安装和删除附加组件的方法。

PopupNotifications.jsm

新的弹出通知模块使您可以轻松地向用户呈现有吸引力的非模态通知。您可以在 使用弹出通知 中了解如何使用此 API。

从 chrome: URL 加载代码模块

您现在可以使用 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 代码模块中使用工作线程

DOM 更改

ChromeWorker

一种用于特权代码的新型工作线程;这使您能够从扩展和应用程序代码中的工作线程中使用 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 方法,使您无需提取 <xul:browser> 元素即可获取选项卡的收藏夹图标。
  • 添加了新的 tabbrowser.tabs 属性,使您可以轻松地获取 <xul:tabbrowser> 元素中的选项卡列表。
  • 新的 pinTabunpinTab 方法使您可以固定和取消固定选项卡(也就是说,在应用程序选项卡和常规选项卡之间切换它们)。
  • <xul:tabbrowser> 添加了 getTabModalPromptBox 方法和 tabmodalPromptShowing 属性以支持选项卡模态警报。

对弹出窗口的更改

  • 不再支持 <xul:popup> 元素;您应该使用 <xul:menupopup> 代替。(如果您继续使用 popup,您将遇到故障,因为该元素不再具有特殊含义。例如,<xul:menuseparator><xul:popup> 中使用时可能会显示为透明。)
  • <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 属性,允许您指定调整大小器是用于窗口还是元素,以防止窗口调整大小器被绘制两次。
  • "active" 属性不再设置在活动 XUL 窗口上。相反,您可以使用新的 :-moz-window-inactive 伪类来为背景窗口分配不同的样式。
  • emptytext 属性现在已弃用;您应该使用 placeholder 代替。
  • <xul:window> 元素现在提供 accelerated 属性;如果为真,则允许硬件层管理器加速窗口。
  • <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 事件可用,使您能够检测何时固定和取消固定选项卡。
  • 新的 TabAttrModified 事件在选项卡的 labelcropbusyimageselected 属性更改时发送。
  • <xul:tab> 元素现在有一个 pinned 属性,使您能够确定选项卡当前是否已固定。
  • <xul:tree> 元素上的 setDirectionIndicator 类已经有一段时间没有做任何事情了;现在它完全不再使用。
  • <xul:window> 元素现在有一个 chromemargin 属性,使您能够设置窗口两侧镀铬和内容之间的边距;例如,您可以使用它在标题栏中绘制。
  • <xul:window> 元素现在有一个 disablechrome 属性;当它用于显示浏览器内 UI(如 about:addons)时,这用于隐藏窗口的大部分镀铬部分。
  • <xul:window> 元素现在有一个 disablefastfind 属性,允许您在内容不支持时禁用窗口中的查找栏。例如,附加组件面板使用它。
  • 工具栏现在可以是工具箱外部的,但仍然被视为 <xul:toolbox> 的成员,方法是设置 <xul:toolbar>toolboxid 属性。此外,<xul:toolbox> 元素现在有一个 externalToolbars 属性,它列出了被视为工具箱成员的所有工具栏。
  • 添加了对记录 XUL 模板以进行调试的支持。

影响开发人员的 UI 更改

附加组件栏

状态栏已被删除,取而代之的是新的附加组件栏。如果您过去一直在向状态栏添加 UI,您需要更新您的扩展以使用它。

隐藏浏览器镀铬

您现在可以隐藏浏览器的镀铬部分,如果这样做是可取的;例如,about:addons 这样做。

存储

其他存储 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 更改

有关 XPCOM 更改的详细信息,这些更改会影响 Firefox 4 中的兼容性。

Components.utils.getGlobalForObject()

此新方法返回与对象关联的全局对象;它取代了现在已删除的__parent__ 的常见用例。

Places

  • Places 查询结果现在可以由多个观察者观察,并且查询可以异步执行。这意味着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
  • nsIINIParserWriter 接口是在 Gecko 1.9.2.4 中添加的,以支持写入 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 Panorama 视图(née TabCandy)。要将其更改回以前滚动到顶部和滚动到底部的命令,请打开 about:config 并将 browser.gesture.swipe.down 设置为 cmd_scrollBottom,并将 browser.gesture.swipe.up 设置为 cmd_scrollTop

另请参阅