Firefox 5 开发者指南

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

JavaScript

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

SVG

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

HTTP

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

MathML

开发者工具

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

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

有关更新您的 Firefox 5 扩展的指南,请参阅更新 Firefox 5 的扩展

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

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。

另请参阅