Firefox 10 开发者版
Firefox 10 于 2012 年 1 月 31 日发布。本文提供有关此版本中新增功能和关键错误修复的信息,以及指向 Web 开发者和插件开发者更详细文档的链接。
注意: Firefox 10 是此浏览器第一个两位数的版本。这可能会导致某些 UA 嗅探脚本出现问题。请务必检查它们,以及您在页面中嵌入的第三方软件(例如库)中包含的那些脚本。有关此问题的更多信息,请查看 hack.mozilla.org 上的 Firefox 采用两位数的文章.
针对 Web 开发者的变更
HTML
JavaScript
WeakMap.set()
方法现在返回undefined
,而不是自身。- Firefox 7 中引入了正则表达式处理错误;此错误已修复。如果您想了解详细信息,请查看 Firefox 错误 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
。
页面可见性 API
- 已实现 页面可见性 API(带前缀):
document.mozHidden
、document.mozVisibilityState
可用,并且当状态修改时会发送mozvisibilitychanged
事件。
全屏 API
- 已添加对
Document/fullscreenEnabled
的支持。 - 已添加新的
:-moz-full-screen-ancestor
属性。这使您能够匹配处于全屏模式下的元素的祖先元素。
电池 API
- 已添加对
window.navigator.mozBattery
的实验性支持(可以通过将首选项dom.battery.enabled
设置为true
来启用,并从 Firefox 11 开始默认启用)。
Canvas
- 如果指定了零大小的源画布,则
createPattern()
方法现在会抛出异常。 - 如果您对
putImageData()
的任何数值参数使用非有限值,则调用现在将被静默忽略,而不是抛出异常,以符合规范。
WebGL
- Firefox 10 现在支持
OES_standard_derivatives
扩展。 - 已添加新的首选项 以帮助测试 WebGL 代码与您完整开发平台上的功能最低的设备的兼容性。
Web Workers
- 属性
XMLHttpRequest.responseType
和XMLHttpRequest.response
现在可以在 Workers 内部使用。 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
现在会创建一个SVGDocument
,当给出包含 SVG 的字符串时。 - 过去,当
element.setAttribute()
解析整数时,如果整数包含任何非数字字符(例如 "42foo"),它将报告错误。现在,它会根据规范将此正确地截断为数字 42。 - ESC 键不再导致
onkeydown
处理程序错误地被调用。 - 不再实现
NameList
接口;它以前有一个实现,但没有实际访问它的方法。 - 方法
document.createProcessingInstruction()
现在可以在 HTML 文档和 XML 文档上工作。ProcessingInstruction
节点仍然只在 XML 文档上支持,但是由于节点可以在文档之间移动,因此能够在 HTML 文档上创建它们也很有用。 - 已将
XMLHttpRequest
responseType
"moz-json
" 在 Firefox 9 中引入 更新到规范的最新草案,并已取消前缀。请参阅 Firefox 错误 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
属性设置为仅在一侧溢出时,该属性处理盒子两侧都溢出情况的方式 已得到修正。 - 对位于定位
<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 错误 559505。--disable-smil
构建选项已被删除。