Firefox 11 开发者发布说明
Firefox 11 于 2012 年 3 月 13 日发布。本文档提供了此版本中新增功能和已修复重要 bug 的信息,以及面向 Web 开发者和插件开发者更详细文档的链接。
面向网络开发者的变更
HTML
DOM
- 现在支持 HTML 元素上的 `
element.outerHTML` 属性。 XMLHttpRequest支持 HTML 解析.- 移除了在执行同步请求时使用 `
XMLHttpRequest` 的 `responseType` 和 `withCredentials` 属性的支持。尝试这样做会抛出 `NS_ERROR_DOM_INVALID_ACCESS_ERR` 异常。此更改已提交给 W3C 以便标准化。 - 新的 `
navigator.mozVibrate()` 方法允许在支持的设备上振动;在 Gecko 中实现为 `mozVibrate()`。 navigator.mozApps返回一个 `Apps` 对象,您可以使用它来安装和管理开放 Web 应用程序。- 不再触发 `MozBeforePaint` 事件。过去使用这些事件的 `
mozRequestAnimationFrame()` 用户现在应改为传递一个回调函数。 - 已添加对取消动画帧请求的支持;`
window.mozRequestAnimationFrame()` 现在返回一个请求 ID 值,您可以将其传递给`window.mozCancelAnimationFrame()` 来取消请求。 - 现在支持 DOM4 规范中引入的几个 `
Event构造函数(`Event`、HTML 事件、`UIEvent` 和 `MouseEvent`)。 - 现在默认启用电池 API。
- 已添加对 `
HTMLMediaElement` 上的 `defaultMuted`、`loop` 和 `muted` 属性的支持。 - 调用 `
Document/exitFullscreen` 现在会恢复之前的全屏元素,如果当前元素的 `Element/requestFullScreen` 方法被调用时有其他元素处于全屏模式。 - `
window.mozRequestAnimationFrame()` 方法不再支持无参数形式。此形式使用不广泛,也不太可能成为标准的一部分。 - 现在可以将 SVG 作为图像绘制到画布上,而不会污染画布。
- 已删除 `GeoPositionAddress` 接口的非标准 `countryCode` 属性;请参见 `nsIDOMGeoAddress`。
- 服务器发送事件现在支持CORS。
- 过去,当用户点击链接时,`window.navigator` 对象上设置的值会被新页面保留。现在,新页面会创建一个新的 `navigator` 对象。这使得 Firefox 的行为与其他所有浏览器一致。
CSS
JavaScript
无更改。
SVG
- `SVGSVGElement` DOM 接口现在支持 `getElementById` 方法。
WebSocket
- WebSocket API 现在支持二进制消息(请参见Firefox bug 676439)。
- 协议和 API 都已更新至规范的最新草案,并且 API 已移除前缀(请参见Firefox bug 666349 和Firefox bug 695635)。
- 以前,Firefox 中使用 WebSockets 发送和接收的消息大小限制为 16 MB;现在最大可达 2 GB(尽管内存容量限制可能使其无法达到如此大的尺寸,但 Firefox 支持此功能)。
IndexedDB
-
已添加对 `IDBFactory.cmp()` 的支持。
-
IndexedDB 键还可以是以下类型之一:Date、Array 和 Float(而不仅仅是 String 和 Integer)。
-
从现在开始,事务在创建事务时启动,而不是在放置第一个请求时启动;例如,考虑以下代码:
jsvar trans1 = db.transaction("foo", READ_WRITE); var trans2 = db.transaction("foo", READ_WRITE); trans2.put("2", "key"); trans1.put("1", "key");代码执行后,对象存储库应包含值“2”,因为 `trans2` 应在 `trans1` 之后运行。
-
在 Firefox 11 之前,给定数据库的所有对象存储库共享 `autoIncrement` 计数器,而根据规范,每个对象存储库都应该有一个单独的计数器。现在已修复。
-
现在可以使用空的 `keyPath` 创建索引。
-
现在可以创建多条目索引(请参见`IDBObjectStore.createIndex` 参数)。
-
`abort` 事件现在会冒泡;此外,还添加了一个 `onabort` 处理程序。
-
现在可以使用 IndexedDB 来存储文件/blob。
-
IndexedDB 现在支持复杂的 `keyPath`,例如 `foo.bar` 来访问 `foo` 属性的 `bar` 属性。
-
在创建对象存储库或索引时,IndexedDB 现在可以接受数组作为 `keyPath`(Firefox bug 694138)。
网络
- Firefox 8 中移除了对双引号字符作为 RFC 2231 和 RFC 5987 分隔符的支持的更改已被恢复,因为这破坏了包括 Outlook Web Access 在内的一些网站。
- HTTP 标头中的用户代理字符串现在包含一个标识符,该标识符让服务器知道正在访问它的 Firefox 是手机还是平板电脑。
开发者工具
Mozilla 和附加组件开发者的更改
JavaScript 代码模块
NetUtil.jsm
- `readInputStreamToString()` 有一个新的可选参数,用于在读取输入流时配置字符集解释。
新的 JavaScript 代码模块
source-editor.jsm-
提供了一个方便易用的源代码编辑器,您可以在自己的插件中使用。这是代码片段和 Firefox 中集成的其他开发者工具使用的相同编辑器。
接口更改
- `mozIAsyncHistory` 接口有一个新的 `mozIAsyncHistory.isURIVisited()` 方法,用于检查 URI 是否已被访问。
- 添加了一个新的 `mozIVisitStatusCallback` 接口,用于为 `mozIAsyncHistory.isURIVisited()` 提供回调处理功能。
- `nsIMacDockSupport` 接口现在支持通过其新的 `badgeText` 属性向应用程序在 Dock 中的图标添加文本徽章。
- 在 `nsINavHistoryResultObserver` 接口中,您现在需要实现 `nsINavHistoryResultObserver.containerStateChanged()` 而不是已废弃的 `containerOpened()` 和 `containerClosed()` 方法。
已移除的接口
以下接口是不再需要的实现细节
nsICharsetResolver- `nsIDOMNSElement`,请参见bug707576,请改用 `nsIDOMElement`。
主题相关更改
- `omni.jar` 文件现在称为`omni.ja`。
首选项更改
ui.tooltipDelay-
指定鼠标光标开始悬停和工具提示显示之间的时间延迟(以毫秒为单位)。
构建系统更改
- 已移除 `--enable-tracejit` 构建选项。
其他更改
- 长时间未更新的插件不再默认假定为兼容;目前是指表示 `maxVersion` 为 4.0 的插件。