开发者版 Firefox 6
基于 Gecko 6.0 的 Firefox 6 于 2011 年 8 月 16 日发布。本文提供了有关此版本中影响开发者的更改的信息链接。
针对 Web 开发者的更改
HTML
- 现在支持 HTML5
<progress>
元素,它允许您创建进度条。 - 现在支持 HTML5
<track>
元素的解析,该元素指定媒体元素的文本轨道。此元素现在应该出现在 DOM 中,但其行为尚未实现。 - 当容器的角使用
border-radius
属性圆角时,<iframe>
元素现在会被其容器正确裁剪。 <form>
元素的文本<input>
字段不再支持 XULmaxwidth
属性;这从未是故意的,并且违反了 HTML 规范。您应该改为使用size
属性来设置输入字段的最大宽度。<canvas>
CanvasRenderingContext2d
属性fillStyle
和strokeStyle
用于忽略在有效颜色定义之后包含的垃圾;现在这被正确地视为错误。例如,"red blue" 作为颜色以前被视为 "red",而应该被忽略。<canvas>
元素的宽度和高度现在可以正确地设置为 0px;以前,当您尝试这样做时,这些会任意设置为 300px。- 已添加对 HTML 自定义数据属性 (
data-*
) 的支持。DOMelement.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.height
和Document.width
。 Firefox 错误 585877 - 已删除
DocumentType
对象的entities
和notations
属性,因为它们从未实现过并且始终返回null
,因为它们已被从规范中删除。 - 已删除
DOMConfiguration
接口和使用它的document.domConfig
属性;它们从未得到支持,并且此后已从 DOM 规范中删除。 hashchange
事件现在正确包含newURL
和oldURL
字段。- 如果在没有文件读取正在进行的情况下使用
FileReader
接口的abort()
方法,则该方法现在会抛出异常。 window.postMessage()
方法现在使用 结构化克隆算法 允许您传递 JavaScript 对象,而不仅仅是将字符串从一个窗口传递到另一个窗口。window.history
API 现在使用 结构化克隆算法 序列化传递给pushState()
和replaceState()
方法的对象;这使您可以使用更复杂的对象(包括包含循环引用图的对象)。- 您现在可以通过侦听新的
beforeprint
和afterprint
事件来 检测何时启动和完成打印。 - 已删除
document.strictErrorChecking
属性,因为它从未实现过并且已从 DOM 规范中删除。 - 现在支持标准的
event.defaultPrevented
属性;您应该使用它而不是非标准的getPreventDefault()
方法来检测是否在事件上调用了event.preventDefault()
。 window.top
属性现在已正确设置为只读。- 已删除我们从未记录过的 DOM 视图。这是一个不必要地使事情复杂化的实现细节,因此我们将其删除。如果您注意到此更改,则可能做错了什么。
EventTarget
函数addEventListener()
的useCapture
参数现在是可选的,就像在 WebKit 中一样(以及根据规范的最新版本)。XMLHttpRequest
对象的mozResponseArrayBuffer
属性已被responseType
和response
属性替换。- 已将
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
- 已更正
<mstyle>
的实现。
辅助功能 (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()
方法已添加到 控制台 API(Firefox 错误 585956)。
针对 Mozilla 和附加组件开发者的更改
有关为使您的附加组件与 Firefox 6 兼容而可能需要进行的更改的概述,请参阅 更新 Firefox 6 的附加组件。
注意:Firefox 6 要求重新编译二进制组件,就像所有主要版本的 Firefox 一样。有关详细信息,请参阅 二进制接口。
JavaScript 代码模块
FileUtils.jsm
openSafeFileOutputStream()
方法现在使用DEFER_OPEN
行为标志 打开文件,而不是尝试立即打开它们。
XPCOMUtils.jsm
- 新的
importRelative()
方法允许您从相对于另一个 JavaScript 代码模块的路径加载一个 JavaScript 代码模块。这使得构建相互依赖的模块变得更容易。
XPCOM
nsCOMArray<T>
现在有一个RemoveObjectsAt()
方法,用于一次从数组中删除多个对象。
从 chrome 使用 DOM
- 在 chrome 代码中使用 DOM 文件 API
-
虽然您始终可以在 chrome 代码中使用 DOM 文件 API,但当从 chrome 使用时,
File
构造函数现在支持指定本地路径名字符串。此外,您还可以使用nsIFile
对象指定要使用 DOM 文件 API 访问的文件。
接口更改
nsINavHistoryQueryOptions
现在支持使用新的SORT_BY_FREQUENCY_ASCENDING
和SORT_BY_FREQUENCY_DESCENDING
常量按频率排序。nsIFilePicker
有一个新的nsIFilePicker.addToRecentDocs
属性,它允许您指示是否应将选定的文件添加到用户的“最近使用的文档”列表(如果存在)。在隐私浏览模式下,此属性无效。- 具有项目 ID 参数的
nsINavBookmarkObserver
方法现在也需要 GUID。 - 如果指定的首选项不存在或没有用户设置的值,
nsIPrefBranch.clearUserPref()
现在不再抛出异常。相反,它什么也不做。 nsIMemoryReporter
接口现在提供支持,用于指示所描述的内存类型(映射、堆或其他)。nsISHEntry
的stateData
属性现在返回一个nsIStructuredCloneContainer
。nsIURI
有一个新的nsIURI.ref
属性,它返回 URI 的引用部分(# 后面的部分)。它还具有新的方法nsIURI.cloneIgnoringRef()
,它克隆nsIURI
但不包括 ref 成员,以及nsIURI.equalsExceptRef()
,它比较另一个nsIURI
但忽略 ref 成员。
新接口
mozIAsyncFavicons
-
一个新的服务,允许您异步访问收藏夹服务。
nsIEventSource
-
详细信息即将发布。
nsIGSettingsCollection
-
详细信息即将发布。
nsIGSettingsService
-
详细信息即将发布。
nsIHttpUpgradeListener
-
通过
nsIHttpChannelInternal.HTTPUpgrade()
方法处理 HTTP 升级请求的回调接口。 nsIStructuredCloneContainer
-
已使用 结构化克隆算法 序列化对象的容器。
nsITelemetry
-
实现遥测支持,以允许记录遥测数据,用于显示性能跟踪目的的直方图。请参阅 Firefox 错误 649502 和 Firefox 错误 585196。
nsITimedChannel
-
请参阅 Firefox 错误 576006。
nsIWebSocketListener
-
请参阅 Firefox 错误 640003。
nsIWebSocketProtocol
-
请参阅 Firefox 错误 640003。
已删除的接口
以下接口是不再需要的实现细节
nsIDOMDocumentEvent
(请参阅 Firefox 错误 655517)nsIDOMDocumentTraversal
(请参阅 Firefox 错误 655514)nsIDOMDocumentRange
(请参阅 Firefox 错误 655513)IWeaveCrypto
(请参阅 Firefox 错误 651596)nsIDOM3DocumentEvent
(请参阅 Firefox 错误 481863)nsIDOMAbstractView
nsILiveTitleNotificationSubject
nsIPlugin
(请参阅 Firefox 错误 637253)nsIPluginInstance
(请参阅 Firefox 错误 637253)nsIHTMLEditRules
(请参阅 Firefox 错误 633750)nsIXSLTProcessorObsolete
(请参阅 Firefox 错误 649534)
其他更改
- 从应用程序代码中使用首选项
-
一个新的静态 API 可用于轻松访问首选项;这仅对应用程序代码可用,附加组件无法使用。