Firefox 5 开发者指南
Firefox 5 基于 Gecko 5.0,于 2011 年 6 月 21 日发布。本文提供了有关此版本中影响开发者的更改的信息链接。
针对 Web 开发者的更改
HTML
- 所有 HTML 元素现在都具有
accessKey
属性,以及blur()
、click()
和focus()
方法。这些在HTMLElement
接口中指定。 - 为了符合 HTML5 规范,已删除对 UTF-7 和 UTF-32 字符集 的支持。
- 在怪异模式下,当匹配时,不再跳过空
<map>
而选择非空<map>
。有关详细信息,请参阅 Gecko 说明 中的<map>
元素。 - Android 上的 Firefox 移动版现在支持 WOFF 字体用于
@font-face
。 - WebGL 不再加载来自源域以外域的纹理,作为一项安全措施。将来某个时候应该会提供 HTTP 访问控制 支持,以更安全地实现此功能。
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()
时指定null
或undefined
图像,现在会正确抛出TYPE_MISMATCH_ERR
异常。 - 指定
globalAlpha
的无效值不再抛出SYNTAX_ERR
异常;这些现在会正确地静默忽略。 - 调用
translate()
、transform()
、rect()
、clearRect()
、fillRect()
、strokeRect()
、lineTo()
、moveTo()
、quadraticCurveTo()
或arc()
时指定无效值不再抛出异常;这些调用现在会正确地静默忽略。 - 将
shadowOffsetX
、shadowOffsetY
或shadowBlur
的值设置为无效值,现在会静默忽略。 - 将
rotate
或scale
的值设置为无效值,现在会静默忽略。
CSS
- CSS 动画
-
已添加对 CSS 动画的支持,目前使用
-moz-
前缀。
DOM
selection
对象的modify()
方法已更改,以便“单词”选择粒度不再包含尾随空格;这使得它在不同平台上更加一致,并与 WebKit 的实现行为相匹配。setTimeout()
方法现在限制为每秒向非活动标签发送不超过一个超时。此外,它现在将嵌套超时限制为 HTML5 规范允许的最小值:4 毫秒(而不是以前限制的 10 毫秒)。- 类似地,
setInterval()
方法现在限制为每秒在非活动标签中不超过一个间隔。 XMLHttpRequest
现在 支持loadend
事件 用于进度监听器。这在任何传输完成后发送(即,在abort
、error
或load
事件之后)。您可以使用它来处理无论传输成功或失败都需要执行的任何任务。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()
方法现在受支持;这使您可以确定函数是否为 生成器。- 以下 保留字 以前仅在严格模式下被视为保留字;现在它们始终被视为保留字:
class
、enum
、export
、extends
、import
和super
。 - 在 chrome 代码中创建的 DOM 文档可能不再公开给沙箱脚本。
- JSON 解析器已重写,以提高速度和合规性。这包括对 Firefox 错误 572279 的修复。
SVG
class
SVG 属性现在可以进行动画处理。- 以下表示对象列表的与 SVG 相关的 DOM 接口现在可索引,并且可以像数组一样访问;此外,它们具有一个
length
属性,指示列表中项目的数量:SVGLengthList
、SVGNumberList
、SVGPathSegList
和SVGPointList
。
HTTP
- Firefox 不再发送
Keep-Alive
HTTP 标头;我们没有正确格式化它,并且它是冗余的,因为我们也发送了Connection
或Proxy-Connection
标头,其值为“keep-alive”。 - HTTP 事务模型已更新,以更智能地重用持久连接池中的连接;Necko 不再将池视为 FIFO 队列,而是尝试对池进行排序,其中具有最大 拥塞窗口 (CWND) 的连接排在首位。这可以通过避免在许多情况下需要增长连接的窗口来减少 HTTP 事务的往返时间 (RTT)。
- 如果同时提供了
filename
和filename*
参数,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>
元素的width
和height
属性现在在 IDL 中反映为无符号整数而不是有符号整数(请参阅HTMLCanvasElement
)。nsIAppStartup2
和nsIAppStartup_MOZILLA_2_0
接口已合并到nsIAppStartup
接口中。nsIDocShell_MOZILLA_2_0_BRANCH
接口已合并到nsIDocShell
接口中。nsIFocusManager_MOZILLA_2_0_BRANCH
接口已合并到nsIFocusManager
接口中。nsIHTMLEditor_MOZILLA_2_0_BRANCH
接口已合并到nsIHTMLEditor
接口中。
新接口
- 添加了
nsIDOMAnimationEvent
。AnimationEvent
已删除的接口
以下接口是不再需要的实现细节
nsICiter
(请参阅Firefox 错误 633066)nsIDOM3Document
(请参阅Firefox 错误 639849)nsIFIXptrEvaluator
nsISelectElement
(请参阅Firefox 错误 619996)
调试辅助工具
- 新的
DebugOnly<T>
帮助程序使仅为DEBUG
构建声明变量成为可能。
JavaScript API(SpiderMonkey)
- 已添加
JS_DoubleToInt32()
和JS_DoubleToUint32()
,用于将jsdouble
值转换为 C 整数和无符号整数。
构建系统更改
- 您现在可以无需
mozconfig
文件构建 Firefox;--enable-application
设置现在默认为“browser”。拉取或下载代码后,您可以使用configure && make
(或make -f client.mk
)构建 Firefox。