Firefox 5 开发者发布说明

基于 Gecko 5.0 的 Firefox 5 于 2011 年 6 月 21 日发布。本文提供了有关此版本中影响开发人员的更改的信息链接。

Web 开发人员的变更

HTML

Canvas 改进

  • <canvas> 2D 绘图上下文现在支持将 ImageData 对象指定为 createImageData() 方法的输入;这会创建一个新的 ImageData 对象,其尺寸与指定的对象相同,但所有像素仍预设为透明黑色。这已记录为已实现但尚未实现。
  • 通过调用 CanvasGradient 方法 addColorStop() 添加颜色停止时指定非有限值,现在会正确抛出 INDEX_SIZE_ERR 而不是 SYNTAX_ERR
  • HTMLCanvasElement 方法 toDataURL() 现在在匹配之前会正确地将指定的 MIME 类型转换为小写。
  • getImageData() 现在正确接受超出画布边界的矩形;画布外的像素将返回为透明黑色。
  • drawImage()createImageData() 现在根据规范处理负参数,通过围绕适当的轴翻转矩形。我们需要一篇关于 CSS 大小调整 及其工作原理的文章。
  • 在调用 createImageData() 时指定非有限值现在会正确抛出 NOT_SUPPORTED_ERR 异常。
  • 如果指定的矩形小于一个像素,createImageData()getImageData() 现在会正确返回至少一个像素的图像数据。
  • 在调用 createRadialGradient() 时指定负半径现在会正确抛出 INDEX_SIZE_ERR
  • 在调用 createPattern()drawImage() 时指定 nullundefined 图像现在会正确抛出 TYPE_MISMATCH_ERR 异常。
  • globalAlpha 指定无效值不再抛出 SYNTAX_ERR 异常;这些现在会正确地被静默忽略。
  • 在调用 translate()transform()rect()clearRect()fillRect()strokeRect()lineTo()moveTo()quadraticCurveTo()arc() 时指定无效值不再抛出异常;这些调用现在会正确地被静默忽略。
  • shadowOffsetXshadowOffsetYshadowBlur 的值设置为无效值现在会被静默忽略。
  • rotatescale 的值设置为无效值现在会被静默忽略。

CSS

CSS 动画

已添加对 CSS 动画的支持,目前使用 -moz- 前缀。

DOM

  • Selection 对象的 modify() 方法已更改,以便“word”选择粒度不再包含尾随空格;这使其在不同平台之间更加一致,并与 WebKit 实现的行为匹配。
  • setTimeout()setTimeout() 方法现在被限制在非活动选项卡中每秒发送不超过一次超时。此外,它现在将嵌套超时限制为 HTML5 规范允许的最小值:4 毫秒(而不是以前限制的 10 毫秒)。
  • 类似地,Window.setInterval()WorkerGlobalScope.setInterval() 方法现在在非活动选项卡中每秒限制为不超过一次间隔。
  • XMLHttpRequest 现在支持用于进度监听器的 loadend 事件。这在任何传输完成后发送(即,在 aborterrorload 事件之后)。您可以使用它来处理无论传输成功或失败都需要执行的任何任务。
  • Blob 以及由此扩展的 File 对象的 slice() 方法已被删除,并替换为一种新的建议语法,使其与 JavaScript 中的 Array.slice()String.slice() 方法更加一致。此方法目前名为 mozSlice()
  • Navigator.language 的值现在通过查看 Accept-Language HTTP 头 的值来确定。
  • 根据 DOM 规范的要求,Element.prefix 属性现在是只读的。
  • HTMLVideoElement 现在支持实验性属性,以获取有关视频渲染统计信息(如帧率)的信息。

JavaScript

  • 正则表达式不再可像函数一样调用;此更改已与 WebKit 团队协同进行,以确保兼容性(参见 WebKit bug 28285)。此功能已存在很长时间,但从未被记录(至少在 MDC 上没有)。
  • 现在支持 Function.prototype.isGenerator() 方法;这使您可以确定函数是否是生成器
  • 以下保留字 以前仅在严格模式下被视为保留;现在它们总是被视为保留:classenumexportextendsimportsuper
  • 在 chrome 代码中创建的 DOM 文档不再能暴露给沙盒脚本。
  • JSON 解析器已重写,以提高速度和合规性。这包括对 Firefox bug 572279 的修复。

SVG

  • class SVG 属性现在可以动画化。
  • 以下表示对象列表的 SVG 相关 DOM 接口现在可索引,并且可以像数组一样访问;此外,它们具有指示列表中项目数量的 length 属性:SVGLengthListSVGNumberListSVGPathSegListSVGPointList

HTTP

  • Firefox 不再发送 Keep-Alive HTTP 头;我们没有正确格式化它,而且它是多余的,因为我们无论如何也发送了带有“keep-alive”值的 ConnectionProxy-Connection 头。
  • HTTP 事务模型已更新,使其在重用持久连接池中的连接方面更加智能;Necko 不再将连接池视为 FIFO 队列,而是尝试将池中的连接按拥塞窗口 (CWND) 从大到小排序。这可以通过在许多情况下避免需要增大连接窗口来减少 HTTP 事务的往返时间 (RTT)。
  • 如果同时提供了 filenamefilename* 参数,Firefox 现在可以更有效地处理 Content-Disposition HTTP 响应头;它会遍历所有提供的名称,如果存在 filename* 参数,即使 filename 参数首先包含,也会使用它。以前,会使用第一个匹配的参数,从而阻止使用更合适的名称。参见 Firefox bug 588781

MathML

开发者工具

  • Web 控制台的 Console 对象现在有一个 debug() 方法,它是其 log() 方法的别名;这提高了与某些现有站点的兼容性。

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

有关为 Firefox 5 更新附加组件的指南,请参阅为 Firefox 5 更新附加组件

注意: Firefox 5 要求重新编译二进制组件,所有主要的 Firefox 版本都是如此。有关详细信息,请参阅 二进制接口

JavaScript 代码模块的更改

新的 JavaScript 代码模块

  • 添加了 Dict.jsm 代码模块;它提供了用于键/值对字典的 API。

NetUtil.jsm

  • asyncFetch() 方法现在支持将输入源指定为 nsIInputStream

接口更改

  • nsIHttpChannelInternal 接口具有新的属性,可提供访问通道端点地址和端口的信息。此信息主要用于调试目的。
  • <canvas> 元素的 widthheight 属性现在在 IDL 中反映为无符号整数而不是有符号整数(参见 HTMLCanvasElement)。
  • nsIAppStartup2nsIAppStartup_MOZILLA_2_0 接口已合并到 nsIAppStartup 接口中。
  • nsIDocShell_MOZILLA_2_0_BRANCH 接口已合并到 nsIDocShell 接口中。
  • nsIFocusManager_MOZILLA_2_0_BRANCH 接口已合并到 nsIFocusManager 接口中。
  • nsIHTMLEditor_MOZILLA_2_0_BRANCH 接口已合并到 nsIHTMLEditor 接口中。

新接口

已移除的接口

以下接口是不再需要的实现细节

调试辅助工具

  • 新的 DebugOnly<T> 辅助工具使仅为 DEBUG 构建声明变量成为可能。

JavaScript API (SpiderMonkey)

构建系统更改

  • 您现在可以在没有 mozconfig 文件的情况下构建 Firefox;--enable-application 设置 现在默认为“browser”。拉取或下载代码后,您可以 configure && make (或 make -f client.mk) 来构建 Firefox。