Firefox 10 面向开发者的发行说明
Firefox 10 已于 2012 年 1 月 31 日发布。本文介绍了此版本中的新功能和已修复的关键 bug,并提供了面向 Web 开发者和附加组件开发者的详细文档链接。
注意: Firefox 10 是该浏览器第一个两位数版本。这可能会导致某些 UA 嗅探脚本出现问题。请务必检查它们,以及您嵌入页面中的第三方软件(例如库)所包含的脚本。有关此内容的更多信息,请参阅 hack.mozilla.org 上的《Firefox 进入两位数,是时候检查你的 UA 嗅探脚本了》文章。
面向网络开发者的变更
HTML
JavaScript
WeakMap.set()方法现在返回undefined,而不是其自身。- Firefox 7 中引入了一个正则表达式处理 bug;此 bug 已修复。如果您想了解详细信息,请参阅 Firefox bug 683838。
- 在 ECMAScript 5 严格模式下(即在
"use strict;"之后),您不能再使用已废弃的 ECMAScript for XML (E4X) 语法。
DOM
DOM3 事件
- 已实现 DOM 事件方法
event.stopImmediatePropagation。 - 已实现鼠标事件
mouseenter和mouseleave。
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.mozHidden、document.mozVisibilityState可用,并且当状态被修改时会发送mozvisibilitychanged事件。
全屏 API
- 已添加对
document.fullscreenEnabled的支持。 - 已添加新的
:-moz-full-screen-ancestor属性。这允许您匹配处于全屏模式的元素的祖先元素。
电池 API
- 已添加对
navigator.mozBattery的实验性支持(可以通过将首选项dom.battery.enabled设置为true来启用,并将在 Firefox 11 开始默认启用)。
Canvas
- 如果指定了零大小的源 Canvas,
createPattern()方法现在会抛出异常。 - 如果您为
putImageData()的任何数字参数使用非有限值,则现在会默默地忽略该调用,而不是抛出异常,以符合规范。
WebGL
- Firefox 10 现在支持
OES_standard_derivatives扩展。 - 已添加新首选项,以帮助在您的完整开发平台上测试 WebGL 代码与最小功能设备之间的兼容性。
Web Workers
- 属性
XMLHttpRequest.responseType和XMLHttpRequest.response现在可在 Worker 内部使用。 Worker()构造函数现在接受 数据 URL。
IndexedDB
IndexedDB 已在更新至最新草案规范方面取得了巨大进展。这项工作将在 Firefox 11 中继续。
- 已添加
IDBIndex.count()和IDBObjectStore.count()方法。 - 已添加
IDBCursor.advance()方法。 - 当在
IDBObjectStore.createIndex()或IDBDatabase.createObjectStore()中遇到未知可选参数时,Gecko 将不再抛出异常,而是忽略它。 - 当调用
IDBTransaction.abort()时,所有待处理的IDBRequest的errorCode都将设置为ABORT_ERROR。 - 方法
IDBObjectStore.delete()和IDBCursor.delete()现在将返回的IDBRequest的result属性设置为undefined。 IDBDatabase.setVersion()方法已被移除,因为它已从最新规范中移除。数据库的版本通过已更新的IDBFactory.open()方法提供,onupgradeneeded回调允许升级数据库的架构。版本本身已从DOMString更改为unsigned long long。IDBVersionChangeRequest接口已被移除,并由新的IDBOpenDBRequest接口取代。- 使用
IDBFactory.open()打开数据库时,如果未提供version参数且数据库不存在,则会以1的版本创建。 - 已添加
IDBFactory.deleteDatabase()方法。 - 通过
IDBKeyRange搜索的方法(例如IDBObjectStore.openCursor和IDBIndex.getKey)可以接受单个键或键范围。
其他
- 当传入正确的 MIME 类型
image/svg+xml时,DOMParser现在在给定 SVG 字符串时会创建一个SVGDocument。 - 过去,当
element.setAttribute()解析整数时,如果整数包含任何非数字字符(例如“42foo”),它会报告错误。现在,它会根据规范将其正确截断为数字 42。 - ESC 键不再错误地导致
onkeydown处理器被错误调用。 NameList接口不再实现;它以前有一个实现,但无法实际访问。document.createProcessingInstruction()方法现在可以在 HTML 文档和 XML 文档上使用。ProcessingInstruction节点仍然只在 XML 文档上受支持,但由于节点可以在文档之间移动,因此能够在 HTML 文档上创建它们也很有帮助。- Firefox 9 中引入的
XMLHttpRequestresponseType"moz-json"已更新为最新规范草案,并已取消前缀。请参阅 Firefox bug 707142 中的注释。
CSS
- 现在支持 CSS 3D 转换。这包括支持
transform-style、perspective、perspective-origin和backface-visibility属性,以及transform和<transform-function>属性中的 3D 转换函数。有关详细信息,请参阅 使用 CSS 转换。 - CSS 属性
unicode-bidi已添加两个新值:-moz-isolation和-moz-plaintext。-moz-isolation值从方向性角度将元素与其环境隔离,使其具有不同的方向性。具有unicode-bidi:-moz-isolation的元素的行为类似于<bdi>元素。-moz-plaintext指示浏览器使用 Unicode 浏览器启发式算法确定方向性,而不是 CSSdirection属性。 - 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 进行响应。
开发者工具
console对象有两个新方法:console.time()和console.timeEnd(),可用于在页面上设置计时器。- 已添加新的 页面检查器,它提供了一种检查和操作内容背后的 HTML 和 CSS 的出色方式。
Mozilla 和附加组件开发者的更改
有关更新附加组件以支持 Firefox 10 时可能出现的问题概述,请参阅 更新 Firefox 10 的附加组件。
注意: 旧的 PRBool 数据类型已退役!文档中任何提及它的地方现在都使用标准 C++ bool 类型代替。文档将在未来更新,但目前,请记住这一点。
清单
- 已向安装清单添加了对
<em:strictCompatibility>的支持。它允许附加组件作者选择检查其扩展的最大版本。如果设置为true,则如果应用程序版本大于<em:maxVersion>,则附加组件将被禁用。Firefox 10 默认情况下,附加组件是兼容的,无论其指定的最大版本如何。此标志会覆盖该首选项。如果您的附加组件执行的操作很可能被 Firefox 更新破坏,则应该设置此标志,但不应在您的附加组件具有二进制组件时设置此标志,因为此类附加组件始终会被严格检查(请记住,二进制组件必须针对每个主要的 Firefox 版本重新编译)。 - 如果您希望恢复到旧行为——即对所有附加组件进行严格兼容性检查,无论其清单中
strictCompatibility标志的值如何,您可以将extensions.strictCompatibility首选项设置为true。
XUL
- 使用
chrome.manifest文件的自举附加组件现在会自动注册清单文件。有关详细信息,请参阅 使用 chrome.manifest 添加用户界面 一节。
XPConnect
Components.utils已添加几个新的属性和方法,用于访问各种与调试相关的信息。
接口更改
mozISpellCheckingEngine和nsIEditorSpellCheck接口已更新,允许无重启附加组件向拼写检查器添加字典。nsIBrowserHistory.lastPageVisited属性已移除。nsIDocumentViewer接口已合并到nsIContentViewer中。nsIURIFixup接口有一个新标志FIXUP_FLAG_USE_UTF8,它允许您在进行转换时告诉它使用 UTF-8 而不是平台字符集。
插件更改
- 已添加新的变量
NPNVdocumentOrigin;它返回文档来源,比window.location更安全。
构建系统更改
- 已移除
--disable-rdf构建选项,该选项实际上使得无法成功构建。目前正在努力完全移除 RDF 支持,但目前 XUL 仍需要它才能运行。有关移除 RDF 必需的最后痕迹的进展,请参阅 Firefox bug 559505。 - 已移除
--disable-smil构建选项。