Firefox 10 面向开发者的发行说明

Firefox 10 已于 2012 年 1 月 31 日发布。本文介绍了此版本中的新功能和已修复的关键 bug,并提供了面向 Web 开发者和附加组件开发者的详细文档链接。

注意: Firefox 10 是该浏览器第一个两位数版本。这可能会导致某些 UA 嗅探脚本出现问题。请务必检查它们,以及您嵌入页面中的第三方软件(例如库)所包含的脚本。有关此内容的更多信息,请参阅 hack.mozilla.org 上的《Firefox 进入两位数,是时候检查你的 UA 嗅探脚本了》文章

面向网络开发者的变更

HTML

  • 已实现新的 HTML5 <bdi> 元素,即双向隔离,允许隔离具有不同方向性的一部分文本。这在显示来自数据库(例如)且方向性未知,同时又位于已知且可能不同的方向性文本中间的文本时特别有用。
  • 您现在可以为 href 属性指定“top”片段,以创建指向页面顶部的链接。这个功能以前是可用的,后来消失了一段时间,现在又回来了,以便与 HTML5 规范兼容。例如:<a href="#top">返回页面顶部</a>

JavaScript

  • WeakMap.set() 方法现在返回 undefined,而不是其自身。
  • Firefox 7 中引入了一个正则表达式处理 bug;此 bug 已修复。如果您想了解详细信息,请参阅 Firefox bug 683838
  • ECMAScript 5 严格模式下(即在 "use strict;" 之后),您不能再使用已废弃的 ECMAScript for XML (E4X) 语法。

DOM

DOM3 事件

DOM4

  • 属性 document.xmlVersion(只能获取不能设置)已被移除,因为它已在 DOM4 规范中废弃。有关 document.xmlVersion 的文章现在建议了一种不使用该属性来检测文档是 HTML 还是 XML 的方法。
  • 属性 document.xmlStandalone 已被移除,因为它已在 DOM4 规范中废弃。
  • 属性 document.xmlEncoding 已被移除,因为它已在 DOM4 规范中废弃。
  • 属性 text.isElementContentWhiteSpace 已被移除,因为它已在 DOM4 规范中废弃。
  • 方法 text.replaceWholeText 已被移除,因为它已在 DOM4 规范中废弃。
  • 方法 node.isSameNode 已被移除,因为它已在 DOM4 规范中废弃。您可以像这样使用 === 运算符来代替 node1.isSameNode(node2)node1 === node2

Page Visibility API

  • 已实现 页面可见性 API(带前缀):document.mozHiddendocument.mozVisibilityState 可用,并且当状态被修改时会发送 mozvisibilitychanged 事件。

全屏 API

  • 已添加对 document.fullscreenEnabled 的支持。
  • 已添加新的 :-moz-full-screen-ancestor 属性。这允许您匹配处于全屏模式的元素的祖先元素。

电池 API

  • 已添加对 navigator.mozBattery 的实验性支持(可以通过将首选项 dom.battery.enabled 设置为 true 来启用,并将在 Firefox 11 开始默认启用)。

Canvas

  • 如果指定了零大小的源 Canvas,createPattern() 方法现在会抛出异常。
  • 如果您为 putImageData() 的任何数字参数使用非有限值,则现在会默默地忽略该调用,而不是抛出异常,以符合规范。

WebGL

Web Workers

  • 属性 XMLHttpRequest.responseTypeXMLHttpRequest.response 现在可在 Worker 内部使用。
  • Worker() 构造函数现在接受 数据 URL

IndexedDB

IndexedDB 已在更新至最新草案规范方面取得了巨大进展。这项工作将在 Firefox 11 中继续。

其他

  • 当传入正确的 MIME 类型 image/svg+xml 时,DOMParser 现在在给定 SVG 字符串时会创建一个 SVGDocument
  • 过去,当 element.setAttribute() 解析整数时,如果整数包含任何非数字字符(例如“42foo”),它会报告错误。现在,它会根据规范将其正确截断为数字 42。
  • ESC 键不再错误地导致 onkeydown 处理器被错误调用。
  • NameList 接口不再实现;它以前有一个实现,但无法实际访问。
  • document.createProcessingInstruction() 方法现在可以在 HTML 文档和 XML 文档上使用。ProcessingInstruction 节点仍然只在 XML 文档上受支持,但由于节点可以在文档之间移动,因此能够在 HTML 文档上创建它们也很有帮助。
  • Firefox 9 中引入的 XMLHttpRequest responseType "moz-json" 已更新为最新规范草案,并已取消前缀。请参阅 Firefox bug 707142 中的注释。

CSS

  • 现在支持 CSS 3D 转换。这包括支持 transform-styleperspectiveperspective-originbackface-visibility 属性,以及 transform<transform-function> 属性中的 3D 转换函数。有关详细信息,请参阅 使用 CSS 转换
  • CSS 属性 unicode-bidi 已添加两个新值:-moz-isolation-moz-plaintext-moz-isolation 值从方向性角度将元素与其环境隔离,使其具有不同的方向性。具有 unicode-bidi:-moz-isolation 的元素的行为类似于 <bdi> 元素。-moz-plaintext 指示浏览器使用 Unicode 浏览器启发式算法确定方向性,而不是 CSS direction 属性。
  • CSS linear-gradient()repeating-linear-gradient() 属性已更新,以支持新的 to 语法和魔幻角算法。这允许在渐变填充框的角落精确指定颜色。
  • 已更正 text-overflow 属性在盒子两侧都溢出而 text-overflow 属性仅设置为单侧溢出情况下的处理。
  • 已修复定位 <table> 元素内部元素的 position 属性处理。此更改将影响页面布局;但是,我们现在符合 CSS 规范和其他浏览器,因此这应该很容易修复。
  • 已修复 <table> 元素周围的边距折叠,以匹配 CSS 规范。以前,表格元素的边距不会与其他相邻元素一起折叠,导致布局不正确。此更改将影响页面布局;但是,我们现在符合 CSS 规范和其他浏览器,因此这应该很容易修复。

SVG

  • <mask> 元素已更新,以支持 sRGB 和 linearRGB,并且现在默认使用 sRGB,符合 SVG 1.1 规范的最新修订版。

网络

  • HTTP 请求中不再发送 HTTP Accept-Charset 头部。在缺少它的情况下,服务器应通过发送 UTF-8 进行响应。

开发者工具

Mozilla 和附加组件开发者的更改

有关更新附加组件以支持 Firefox 10 时可能出现的问题概述,请参阅 更新 Firefox 10 的附加组件

注意: 旧的 PRBool 数据类型已退役!文档中任何提及它的地方现在都使用标准 C++ bool 类型代替。文档将在未来更新,但目前,请记住这一点。

清单

  • 已向安装清单添加了对 <em:strictCompatibility> 的支持。它允许附加组件作者选择检查其扩展的最大版本。如果设置为 true,则如果应用程序版本大于 <em:maxVersion>,则附加组件将被禁用。Firefox 10 默认情况下,附加组件是兼容的,无论其指定的最大版本如何。此标志会覆盖该首选项。如果您的附加组件执行的操作很可能被 Firefox 更新破坏,则应该设置此标志,但不应在您的附加组件具有二进制组件时设置此标志,因为此类附加组件始终会被严格检查(请记住,二进制组件必须针对每个主要的 Firefox 版本重新编译)。
  • 如果您希望恢复到旧行为——即对所有附加组件进行严格兼容性检查,无论其清单中 strictCompatibility 标志的值如何,您可以将 extensions.strictCompatibility 首选项设置为 true

XUL

XPConnect

  • Components.utils 已添加几个新的属性和方法,用于访问各种与调试相关的信息。

接口更改

  • mozISpellCheckingEnginensIEditorSpellCheck 接口已更新,允许无重启附加组件向拼写检查器添加字典。
  • nsIBrowserHistory.lastPageVisited 属性已移除。
  • nsIDocumentViewer 接口已合并到 nsIContentViewer 中。
  • nsIURIFixup 接口有一个新标志 FIXUP_FLAG_USE_UTF8,它允许您在进行转换时告诉它使用 UTF-8 而不是平台字符集。

插件更改

  • 已添加新的变量 NPNVdocumentOrigin;它返回文档来源,比 window.location 更安全。

构建系统更改

  • 已移除 --disable-rdf 构建选项,该选项实际上使得无法成功构建。目前正在努力完全移除 RDF 支持,但目前 XUL 仍需要它才能运行。有关移除 RDF 必需的最后痕迹的进展,请参阅 Firefox bug 559505
  • 已移除 --disable-smil 构建选项。