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