开发者版 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 element.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 伪类不会应用于类选择器;例如,.someclass:hover 不起作用。此怪癖已删除。
  • 可以将 :indeterminate 伪类应用于 <progress> 元素。这是非标准的,但我们希望其他浏览器会采用它,因为它将非常有用。
  • 已将 -moz-win-exclude-glass 值添加到 -moz-appearance CSS 属性中,以便在 Windows 系统上的 Aero Glass 毛玻璃效果中排除不透明区域。
  • Firefox 错误 658949 更改了在数据 URL 中处理哈希 (#) 符号的方式,如果该符号未转义,则可能会破坏包含此符号的 CSS 样式表。

DOM

从代码中使用媒体查询

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

触摸事件

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

服务器发送事件

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

  • navigator.securityPolicy 长期以来一直返回空字符串,现已彻底删除。
  • 现在已实现 BlobBuilder,但目前它是带前缀的(因此您需要使用 MozBlobBuilder)。
  • 已删除 Document.heightDocument.widthFirefox 错误 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 属性替换。
  • 已将 element.dataset 属性添加到 HTMLElement 接口,允许访问元素的 data-* 全局属性
  • 已实现 CustomEvent 接口。(参见 Firefox 错误 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 发生时,现在会正确发送属性更改事件。

网络

WebSockets

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

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

其他更改

  • 已删除对微摘要的支持;这些从未被广泛使用,而且不易发现,继续支持它们会使对 Places(书签和历史记录)架构的改进变得困难。
  • WebGL 现在支持 OES_texture_float 扩展。
  • 新的Scratchpad 工具提供了一个方便的地方来试验 JavaScript 代码。
  • console.trace() 方法已添加到 控制台 APIFirefox 错误 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 文件 API

虽然您始终可以在 chrome 代码中使用 DOM 文件 API,但当从 chrome 使用时,File 构造函数现在支持指定本地路径名字符串。此外,您还可以使用 nsIFile 对象指定要使用 DOM 文件 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(),它克隆 nsIURI 但不包括 ref 成员,以及 nsIURI.equalsExceptRef(),它比较另一个 nsIURI 但忽略 ref 成员。

新接口

mozIAsyncFavicons

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

nsIEventSource

详细信息即将发布。

nsIGSettingsCollection

详细信息即将发布。

nsIGSettingsService

详细信息即将发布。

nsIHttpUpgradeListener

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

nsIStructuredCloneContainer

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

nsITelemetry

实现遥测支持,以允许记录遥测数据,用于显示性能跟踪目的的直方图。请参阅 Firefox 错误 649502Firefox 错误 585196

nsITimedChannel

请参阅 Firefox 错误 576006

nsIWebSocketListener

请参阅 Firefox 错误 640003

nsIWebSocketProtocol

请参阅 Firefox 错误 640003

已删除的接口

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

其他更改

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

一个新的静态 API 可用于轻松访问首选项;这仅对应用程序代码可用,附加组件无法使用。

另请参阅