Firefox 6 开发者发行说明

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

Web 开发人员的变更

HTML

  • 现在支持 HTML5 <progress> 元素,该元素允许您创建进度条。
  • 现在支持解析 HTML5 <track> 元素,该元素指定媒体元素的文本轨道。此元素现在应该出现在 DOM 中,尽管其行为尚未实现。
  • 当容器的角使用 border-radius 属性进行圆角处理时,<iframe> 元素现在可以正确地被其容器裁剪。
  • <form> 元素的文本 <input> 字段不再支持 XUL maxwidth 属性;这从未是有意的,并且违反了 HTML 规范。您应该改用 size 属性来设置输入字段的最大宽度。
  • <canvas> CanvasRenderingContext2d 属性 fillStylestrokeStyle 过去常常忽略有效颜色定义后包含的垃圾;现在这被正确地视为一个错误。例如,"red blue" 作为颜色以前被视为 "red",而它本应该被忽略。
  • <canvas> 元素的宽度和高度现在可以正确设置为 0px;以前,当您尝试这样做时,它们会被任意设置为 300px。
  • 已添加对 HTML 自定义数据属性 (data-*) 的支持。DOM dataset 属性允许访问它们。
  • <textarea> 元素获得焦点时,文本插入点现在默认放置在文本的开头而不是结尾。这使得 Firefox 的行为与其他浏览器一致。

CSS

-moz-text-decoration-color

此新属性允许您设置文本装饰(如下划线、上划线和删除线)使用的颜色。

-moz-text-decoration-line

此新属性允许您设置添加到元素的文本装饰类型。

-moz-text-decoration-style

此新属性允许您设置文本装饰的样式(如下划线、上划线和删除线)。样式包括单笔画、双笔画、波浪线、点线等。

-moz-hyphens

此新属性允许您控制行包装期间单词的连字符处理方式。

-moz-orient

一个新的(目前是 Mozilla 特有的)属性,允许您控制某些元素(特别是 <progress>)的垂直或水平方向。

::-moz-progress-bar

一个 Mozilla 特有的伪元素,允许您样式化 <progress> 元素中表示任务已完成部分的区域。

其他更改

  • @-moz-document 属性有一个新的 regexp() 函数,它允许您将文档的 URL 与正则表达式匹配。
  • 不再支持 azimuth CSS 属性,因为我们已经删除了 aural 媒体组中我们仅有的少量代码。它从未得到显著实现,因此暂时删除笨重的实现比尝试修补它更有意义。
  • 过去,在怪异模式下,:hover 伪类不应用于类选择器;例如,.some-class:hover 不起作用。此怪异行为已被移除。
  • :indeterminate 伪类可以应用于 <progress> 元素。这是非标准的,但我们希望其他浏览器也能采用它,因为它会很有用。
  • -moz-appearance CSS 属性中添加了 -moz-win-exclude-glass 值,以排除 Windows 系统上 Aero Glass 玻璃效果中的不透明区域。
  • Firefox bug 658949 更改了数据 URL 中散列 (#) 符号的处理方式,这可能会破坏包含此类符号的 CSS 样式表(如果未转义)。

DOM

从代码中使用媒体查询

您现在可以使用 window.matchMedia() 方法和 MediaQueryList 接口以编程方式测试媒体查询字符串的结果。

触摸事件

Firefox 6 增加了对 W3C 标准触摸事件的支持;这使得在触摸屏和触控板等触摸敏感表面上同时解释一个或多个触摸变得容易。

服务器发送事件

服务器发送事件使得 Web 应用程序能够请求服务器发送事件,就像任何本地创建的 DOM 事件一样。

  • navigator.securityPolicy,长期以来一直返回空字符串,已被完全移除。
  • BlobBuilder 现已实现,但目前它带有前缀(因此您需要使用 MozBlobBuilder)。
  • Document.heightDocument.width 已被移除。Firefox bug 585877
  • DocumentType 对象的 entitiesnotations 属性(从未实现且始终返回 null)已被移除,因为它们已从规范中移除。
  • DOMConfiguration 接口及其使用的 document.domConfig 属性均已被移除;它们从未得到支持,并且已从 DOM 规范中移除。
  • hashchange 事件现在正确地包含 newURLoldURL 字段
  • FileReader 接口的 abort() 方法现在在没有文件读取进行时使用会抛出异常。
  • window.postMessage() 方法现在使用 结构化克隆算法,让您可以从一个窗口传递 JavaScript 对象,而不仅仅是字符串。
  • window.history API 现在使用 结构化克隆算法 来序列化您传递给 pushState()replaceState() 方法的对象;这让您可以使用更复杂的对象(包括包含循环引用图的对象)。
  • 您现在可以通过监听新的 beforeprintafterprint 事件来检测何时启动和完成打印
  • document.strictErrorChecking 属性已被移除,因为它从未实现并已从 DOM 规范中移除。
  • 现在支持标准 event.defaultPrevented 属性;您应该使用它而不是非标准的 getPreventDefault() 方法来检测是否在事件上调用了 event.preventDefault()
  • window.top 属性现在是只读的。
  • DOM 视图,我们从未记录过,已被移除。这是一个不必要的复杂化的问题,所以我们删除了它。如果您注意到此更改,您可能做错了什么。
  • EventTarget 函数 addEventListener()useCapture 参数现在是可选的,与 WebKit 中一样(并根据规范的最新版本)。
  • XMLHttpRequest 对象的 mozResponseArrayBuffer 属性已被 responseTyperesponse 属性替换。
  • 已将 dataset 属性添加到 HTMLElement 接口,允许访问元素的 data-* 全局属性
  • 已实现 CustomEvent 接口。(参见 Firefox bug 427537
  • 出于安全原因,当用户在位置栏中输入 data:javascript: URL 时,它们不再继承当前页面的安全上下文;相反,会创建一个新的、空的安全上下文。这意味着通过在位置栏中输入 javascript: URL 加载的脚本不再能够访问 DOM 方法等。但是,当脚本使用这些 URL 时,它们仍然像以前一样工作。

JavaScript

  • 过去,可以在几个内置函数(eval()parseInt()Date.parse() 等)上使用 new 运算符,根据规范,它们不应该允许这样做。现在不再支持这种行为。以这种方式使用 new 运算符从未得到官方支持,也未广泛使用,因此此更改不太可能影响您。
  • ECMAScript 2015 WeakMaps 已作为原型实现添加。

SVG

  • 现在支持 pathLength 属性。
  • 当从 data: URL 加载时,SVG 模式、渐变和滤镜现在可以正常工作。

MathML

可访问性 (ARIA)

  • aria-busy 的值发生变化时,现在会正确发送状态更改事件。
  • aria-sort 发生时,现在会正确发送属性更改事件。

网络

WebSocket

WebSockets 已更新到 Firefox 6 的协议版本 07。此外,全局 WebSocket 对象已重命名为 MozWebSocket,以防止其被错误地用于检测未加前缀的 WebSockets 的可用性。

  • Content-Disposition 头部的解析已修复,以正确地将反斜杠转义的 ASCII 字符解释为字符本身。以前它错误地将该字符替换为下划线 ("_")。
  • 当使用引号时,Set-Cookie 头部上路径字段的值现在可以正确解释;以前,它们被视为路径字符串的一部分而不是分隔符。此更改可能会影响与某些网站的兼容性,因此作者应检查其代码。
  • 现在支持 Upgrade 请求头;您可以通过调用 nsIHttpChannelInternal.HTTPUpgrade() 请求将 HTTP 通道升级到另一个协议。

其他更改

  • 已移除对微摘要的支持;它们从未被广泛使用,也不易发现,并且继续支持它们使得 Places(书签和历史记录)架构的改进变得困难。
  • WebGL 现在支持 OES_texture_float 扩展。
  • 新的 Scratchpad 工具提供了一个方便的场所来实验 JavaScript 代码。
  • 已将 console.trace() 方法添加到 Console API (Firefox bug 585956)。

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

有关您可能需要进行的更改的概述,以使您的附加组件与 Firefox 6 兼容,请参阅更新适用于 Firefox 6 的附加组件

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

JavaScript 代码模块

FileUtils.jsm

  • openSafeFileOutputStream() 方法现在使用 DEFER_OPEN 行为标志 打开文件,而不是尝试立即打开它们。

XPCOMUtils.jsm

  • 新的 importRelative() 方法允许您从相对于另一个 JavaScript 代码模块路径的路径加载一个 JavaScript 代码模块。这使得构建相互依赖的模块变得更容易。

XPCOM

从 chrome 使用 DOM

在 chrome 代码中使用 DOM File API

尽管您始终可以从 chrome 代码中使用 DOM File API,但 File 构造函数现在在从 chrome 使用时支持指定本地路径名字符串。此外,您还可以使用 nsIFile 对象指定要使用 DOM File API 访问的文件。

接口更改

  • nsINavHistoryQueryOptions 现在支持使用新的 SORT_BY_FREQUENCY_ASCENDINGSORT_BY_FREQUENCY_DESCENDING 常量按频率顺序排序。
  • nsIFilePicker 有一个新的 nsIFilePicker.addToRecentDocs 属性,它允许您指示所选文件是否应添加到用户的“最近文档”列表(如果存在)。此属性在隐私浏览模式下无效。
  • 带有项目 ID 参数的 nsINavBookmarkObserver 方法现在也需要 GUID。
  • 如果指定的首选项不存在或没有用户设置的值,nsIPrefBranch.clearUserPref() 不再抛出异常。相反,它什么也不做。
  • nsIMemoryReporter 接口现在支持指示所描述内存的类型(映射、堆或其他)。
  • nsISHEntrystateData 属性现在返回一个 nsIStructuredCloneContainer
  • nsIURI 有一个新的 nsIURI.ref 属性,它返回 URI 的引用部分(“#”之后的部分)。它还有新的方法 nsIURI.cloneIgnoringRef(),它克隆不带 ref 成员的 nsIURI,以及 nsIURI.equalsExceptRef(),它比较另一个 nsIURI 时忽略 ref 成员。

新接口

mozIAsyncFavicons

一项新服务,允许您异步访问收藏夹服务。

nsIEventSource

详情待定。

nsIGSettingsCollection

详情待定。

nsIGSettingsService

详情待定。

nsIHttpUpgradeListener

用于通过 nsIHttpChannelInternal.HTTPUpgrade() 方法处理 HTTP 升级请求的回调接口。

nsIStructuredCloneContainer

用于存储已使用 结构化克隆算法 序列化的对象的容器。

nsITelemetry

实现遥测支持,允许记录遥测数据,用于呈现直方图以进行性能跟踪。参见 Firefox bug 649502Firefox bug 585196

nsITimedChannel

参见 Firefox bug 576006

nsIWebSocketListener

参见 Firefox bug 640003

nsIWebSocketProtocol

参见 Firefox bug 640003

已移除的接口

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

其他更改

从应用程序代码使用首选项

提供了一个新的静态 API,用于轻松访问首选项;这仅适用于应用程序代码,不能由附加组件使用。