Firefox 11 开发者发布说明

Firefox 11 于 2012 年 3 月 13 日发布。本文档提供了此版本中新增功能和已修复重要 bug 的信息,以及面向 Web 开发者和插件开发者更详细文档的链接。

面向网络开发者的变更

HTML

  • 已实现 `<audio>` 和 `<video>` 元素上的 `muted` 和 `loop` 属性。

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

  • 现在支持 `text-size-adjust` 属性。
  • CSS3条件规则现在支持得更好:嵌套语句现在可以添加到 `@media` 和 `@-moz-document` 中。(请参见CSS 语法CSS 规则)。

JavaScript

无更改。

SVG

  • `SVGSVGElement` DOM 接口现在支持 `getElementById` 方法。

WebSocket

  • WebSocket API 现在支持二进制消息(请参见Firefox bug 676439)。
  • 协议和 API 都已更新至规范的最新草案,并且 API 已移除前缀(请参见Firefox bug 666349Firefox bug 695635)。
  • 以前,Firefox 中使用 WebSockets 发送和接收的消息大小限制为 16 MB;现在最大可达 2 GB(尽管内存容量限制可能使其无法达到如此大的尺寸,但 Firefox 支持此功能)。

IndexedDB

  • 已添加对 `IDBFactory.cmp()` 的支持。

  • IndexedDB 键还可以是以下类型之一:Date、Array 和 Float(而不仅仅是 String 和 Integer)。

  • 从现在开始,事务在创建事务时启动,而不是在放置第一个请求时启动;例如,考虑以下代码:

    js
    var 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)。

网络

开发者工具

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`。

首选项更改

ui.tooltipDelay

指定鼠标光标开始悬停和工具提示显示之间的时间延迟(以毫秒为单位)。

构建系统更改

  • 已移除 `--enable-tracejit` 构建选项。

其他更改

  • 长时间未更新的插件不再默认假定为兼容;目前是指表示 `maxVersion` 为 4.0 的插件。