Firefox 9 开发者版

Firefox 9 于 2011 年 12 月 20 日发布 Windows 版本。Mac 和 Linux 版本 9.0.1 修复了在最后一刻发现的崩溃错误,于 2011 年 12 月 21 日发布。

面向 Web 开发者的更改

HTML

CSS

  • 现在支持 font-stretch 属性。
  • 现在支持 columns 属性,带 -moz 前缀。这是以下属性的简写:column-widthcolumn-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”,则您不应跟踪用户。
  • RangeSelection 对象在调用 splitText()normalize() 时,现在会根据其规范进行操作。
  • 对于文档类型节点,Node.ownerDocument 的值现在是调用 createDocumentType() 以创建节点的文档,而不是 null
  • 已删除 window.navigator.taintEnabled;它在很多年前就不再受支持了。

工作线程

  • 在 Firefox 8 中,blob URL 中实现的工作线程已损坏,从 Firefox 9 开始,它们又可以正常工作了。

WebGL

  • 现在支持 WebGL 上下文 drawingBufferWidthdrawingBufferHeight 属性。

MathML

  • 已删除 <maction> 元素的 actiontype 属性上的非标准 restyle 值。
  • 虽然仍然不支持,但使用 mlabeledtr 元素不再完全破坏渲染。有关此元素的实际支持进展,请参见 Firefox 错误 689641

网络

  • 现在您可以发送 JavaScript 类型化数组 的内容(即 ArrayBuffer 对象的内容) 使用 XMLHttpRequest
  • WebSocket 连接现在允许接收在其他情况下有效的 UTF-8 数据帧中的非字符,而不是失败。
  • 为简单起见,XSLT 请求的 HTTP Accept 标头已更改为 */*。由于获取 XSLT 一直都回退到 */*,因此简化初始请求是有意义的。
  • 服务器尝试使用 301 Moved Permanently307 Temporary Redirect 响应代码将用户重定向到 javascript: URI 现在会 导致“连接错误”,而不是实际重定向。这可以防止某些类型的跨站点脚本攻击。
  • 以前,使用空 Content-Disposition 提供的内容被视为 Content-Disposition 为“attachment”;这并不总是按预期工作。现在,这些内容被视为 Content-Disposition 为“inline”。
  • 磁盘缓存中项目的默认最大大小已增加到 50 MB;以前,仅缓存最大为 5 MB 的项目。

开发者工具

面向 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 对象。

服务更改

NSPR

  • NSPR 现在有一个“追加”模块,允许您将新数据追加到现有日志的末尾。

接口更改

已删除的接口

  • 在简化 Places 和 DocShell 代码的过程中,已删除 nsIGlobalHistory3

其他接口更改

  • nsISound 接口有一个新的常量 EVENT_EDITOR_MAX_LEN。它允许播放系统声音,用于当文本字段中输入的字符超过最大允许数量时。目前,这仅在 Windows 上使用。
  • nsIScriptError2 接口新增了 timeStampinnerWindowID 属性;此外,initWithWindowID() 方法现在接受内部窗口 ID 而不是外部窗口 ID。
  • 添加了 nsIBidiKeyboard.haveBidiKeyboards 属性;它允许您确定系统是否为每个方向(从左到右和从右到左)安装了至少一个键盘。
  • 新的 nsIEditor.isSelectionEditable 属性允许您确定当前选区锚点是否可编辑。这有助于支持仅文档的某些部分可编辑的情况,让您可以查看当前选区是否在可编辑部分。
  • nsIBrowserHistory.registerOpenPage()nsIBrowserHistory.unregisterOpenPage() 方法已作为 Places 系统性能改进的一部分删除。您可以改用 mozIPlacesAutoComplete 中的相应方法。
  • 添加了 nsIDOMWindowUtils.wrapDOMFile() 方法;它为给定的 nsIFile 返回一个 DOM File 对象。
  • 添加了 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 对象添加功能。

另请参阅