Firefox 9 开发者版
Firefox 9 于 2011 年 12 月 20 日发布 Windows 版本。Mac 和 Linux 版本 9.0.1 修复了在最后一刻发现的崩溃错误,于 2011 年 12 月 21 日发布。
面向 Web 开发者的更改
HTML
<li>
元素的value
属性现在可以为负值。以前负值会被转换为 0。- 现在您可以在使用
<audio>
和<video>
元素时,在媒体的 URI 中 指定媒体的开始和结束时间。 <input>
和<textarea>
元素 现在会尊重lang
属性的值,在调用拼写检查器时。- Android 上的 Firefox 现在允许用户在使用
<input>
元素且type="file"
和accept="image/*"
时,在不离开浏览器的情况下使用手机摄像头拍摄照片。 - 现在支持 Windows Vista 风格的 PNG ICO 图像。
- 使用
crossorigin
属性请求 CORS 访问权限的绘制图像,在 CORS 被授予权限时,不再 错误地污染画布。 rowspan
属性的值现在可以大到 65,534,以前是 8190。
CSS
- 现在支持
font-stretch
属性。 - 现在支持
columns
属性,带-moz
前缀。这是以下属性的简写:column-width
和column-count
。 - 当使用
<link>
元素包含的样式表完全加载和解析(但尚未应用于文档)时,现在会触发load
事件。此外,如果在处理样式表时发生错误,则会触发error
事件。 - 现在您可以使用
text-overflow
的新的双值语法为内容的左侧和右侧指定溢出设置。
JavaScript
无变化。
DOM
- 使用全屏模式
-
新的全屏 API 提供了一种使用整个屏幕呈现内容的方法,没有任何浏览器界面。这非常适合视频和游戏。此 API 目前是实验性的,带前缀。
- 现在已实现
Node.contains()
方法;这使您能够确定给定节点是否为另一个节点的后代。 - 已实现
Node.parentElement
属性;这将返回 DOM 节点的父Element
,如果父节点不是元素,则返回null
。 - 现在支持 DOM Level 3 组合事件。
- 已实现
Document.scripts
属性;这将返回文档中所有<script>
元素的HTMLCollection
。 - 已实现
Document.queryCommandSupported()
方法。 - 可以针对
<body>
元素监听的事件集已修改,以匹配 HTML5 规范的最新草案。DOM 事件参考 中的事件列表反映了可以在<body>
上监听的事件。 - 现在仅在
Document
上触发readystatechange
事件,如预期的那样。 - 事件处理程序现在以标准 IDL 接口实现。对于大多数情况,这不会影响内容,但也有例外。
- 已将新的响应类型“
moz-json
”添加到XMLHttpRequest
,使XMLHttpRequest
可以自动为您解析 JSON 字符串;当您请求此类型时,返回的 JSON 字符串将被解析,因此response
属性的值是生成的 JavaScript 对象。 XMLHttpRequest
“progress”事件 现在会针对接收到的每个数据块可靠地发送;过去,接收到的最后一个数据块可能不会触发“progress”事件。现在您可以仅通过跟踪“progress”事件来跟踪进度,而不是还必须监视“load”事件来检测最后一个数据块的接收。- 过去,使用
null
监听器调用addEventListener()
会抛出异常。现在它会返回,不产生错误,也不产生任何影响。 - 新的
navigator.doNotTrack
属性可以让您的内容轻松确定用户是否启用了其不跟踪偏好;如果此值为“yes”,则您不应跟踪用户。 Range
和Selection
对象在调用splitText()
和normalize()
时,现在会根据其规范进行操作。- 对于文档类型节点,
Node.ownerDocument
的值现在是调用createDocumentType()
以创建节点的文档,而不是null
。 - 已删除
window.navigator.taintEnabled
;它在很多年前就不再受支持了。
工作线程
- 在 Firefox 8 中,blob URL 中实现的工作线程已损坏,从 Firefox 9 开始,它们又可以正常工作了。
WebGL
- 现在支持 WebGL 上下文
drawingBufferWidth
和drawingBufferHeight
属性。
MathML
- 已删除
<maction>
元素的actiontype
属性上的非标准restyle
值。 - 虽然仍然不支持,但使用
mlabeledtr
元素不再完全破坏渲染。有关此元素的实际支持进展,请参见 Firefox 错误 689641。
网络
- 现在您可以发送 JavaScript 类型化数组 的内容(即
ArrayBuffer
对象的内容) 使用 XMLHttpRequest。 - WebSocket 连接现在允许接收在其他情况下有效的 UTF-8 数据帧中的非字符,而不是失败。
- 为简单起见,XSLT 请求的 HTTP
Accept
标头已更改为*/*
。由于获取 XSLT 一直都回退到*/*
,因此简化初始请求是有意义的。 - 服务器尝试使用
301 Moved Permanently
或307 Temporary Redirect
响应代码将用户重定向到javascript:
URI 现在会 导致“连接错误”,而不是实际重定向。这可以防止某些类型的跨站点脚本攻击。 - 以前,使用空
Content-Disposition
提供的内容被视为Content-Disposition
为“attachment”;这并不总是按预期工作。现在,这些内容被视为Content-Disposition
为“inline”。 - 磁盘缓存中项目的默认最大大小已增加到 50 MB;以前,仅缓存最大为 5 MB 的项目。
开发者工具
- Web 控制台现在支持其日志记录方法中的基本 字符串替换。
- 您现在可以在 Web 控制台中 创建视觉上嵌套的输出块,以帮助更轻松地阅读。
面向 Mozilla 和附加组件开发者的更改
请参阅 更新 Firefox 9 的附加组件,了解您可能需要进行哪些更改才能使您的附加组件在 Firefox 9 中正常工作。
XUL
<xul:tab>
元素现在具有pending
属性,当选项卡正在被会话存储服务恢复时,其值为true
。这可以用于在主题中为选项卡设置样式。在非挂起的选项卡上不存在此属性。<xul:tab>
元素现在具有unread
属性,当选项卡自上次成为活动选项卡以来发生了更改,或者自当前会话开始以来未被选中时,其值为true
。在未读选项卡上不存在此属性。- 您现在可以将
<xul:panel>
作为 DOM 拖放操作的拖放图像使用。这使您可以使用标准拖放 API 拖放 XUL 内容。 <xul:notificationbox>
元素的appendNotification
) 方法现在允许您指定一个回调,该回调会在与通知框相关的有趣事件发生时被调用。目前,唯一发生的事件是“removed”,它会告诉您该框已从其窗口中移除。
JavaScript 代码模块更改
FileUtils.jsm
现在具有一个File
构造函数,该构造函数会返回一个表示由其路径名指定的文件的nsIFile
对象。
服务更改
- 内容偏好服务现在处理私密模式浏览(参见 Firefox bug 679784)。
NSPR
- NSPR 现在有一个“追加”模块,允许您将新数据追加到现有日志的末尾。
接口更改
已删除的接口
- 在简化 Places 和 DocShell 代码的过程中,已删除
nsIGlobalHistory3
。
其他接口更改
nsISound
接口有一个新的常量EVENT_EDITOR_MAX_LEN
。它允许播放系统声音,用于当文本字段中输入的字符超过最大允许数量时。目前,这仅在 Windows 上使用。nsIScriptError2
接口新增了timeStamp
和innerWindowID
属性;此外,initWithWindowID()
方法现在接受内部窗口 ID 而不是外部窗口 ID。- 添加了
nsIBidiKeyboard.haveBidiKeyboards
属性;它允许您确定系统是否为每个方向(从左到右和从右到左)安装了至少一个键盘。 - 新的
nsIEditor.isSelectionEditable
属性允许您确定当前选区锚点是否可编辑。这有助于支持仅文档的某些部分可编辑的情况,让您可以查看当前选区是否在可编辑部分。 nsIBrowserHistory.registerOpenPage()
和nsIBrowserHistory.unregisterOpenPage()
方法已作为 Places 系统性能改进的一部分删除。您可以改用mozIPlacesAutoComplete
中的相应方法。- 添加了
nsIDOMWindowUtils.wrapDOMFile()
方法;它为给定的nsIFile
返回一个 DOMFile
对象。 - 添加了
nsIChromeFrameMessageManager.removeDelayedFrameScript()
方法以支持删除延迟加载脚本。引导式附加组件应该在关闭时使用此方法,以删除它使用nsIChromeFrameMessageManager.loadFrameScript()
加载的任何脚本(延迟加载标志已设置)。这对附加组件来说是browser.messageManager.removeDelayedFrameScript()
。 nsIAppStartup
接口有一个新的interrupted
属性,它允许您知道启动过程是否在任何时候被交互式提示中断。例如,这在性能评估期间对启动时间进行计时时很有用,以便能够从被中断的会话中删除数字。nsIEditorSpellCheck
接口已修改以支持按网站选择拼写检查词典。
IDL 解析器
IDL 解析器不再包含对从未完全实现的唯一指针概念的支持。
构建系统更改
- 已删除用于构建独立 XPConnect 的
--enable-application=standalone
选项;无论如何它从 2007 年起就无法工作。 - 已删除对构建 Necko 和 Transformiix XSLT 独立的支持;您不能再使用
--enable-application=network
或--enable-application=content/xslt
。 - 构建系统现在在
$topsrcdir/.mozconfig
或$topsrcdir/mozconfig
处查找.mozconfig
,而不在其他任何地方,除非您使用MOZCONFIG
环境变量覆盖.mozconfig
路径。 - SDK 中的
xpidl
实用程序已被pyxpidl
取代。
其他更改
- 拼写检查器不再对尝试拼写检查的单词的长度有限制(130 个字符)。之前设置此限制是为了防止拼写检查器中发生的崩溃,但底层错误已修复。
- 您现在可以使用“JavaScript-navigator-property”类别注册组件,以向
window.navigator
对象添加功能。