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-*) 的支持。DOMdataset属性允许访问它们。 - 当
<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 与正则表达式匹配。- 不再支持
azimuthCSS 属性,因为我们已经删除了aural媒体组中我们仅有的少量代码。它从未得到显著实现,因此暂时删除笨重的实现比尝试修补它更有意义。 - 过去,在怪异模式下,
:hover伪类不应用于类选择器;例如,.some-class:hover不起作用。此怪异行为已被移除。 :indeterminate伪类可以应用于<progress>元素。这是非标准的,但我们希望其他浏览器也能采用它,因为它会很有用。-moz-appearanceCSS 属性中添加了-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.height和Document.width已被移除。Firefox bug 585877DocumentType对象的entities和notations属性(从未实现且始终返回null)已被移除,因为它们已从规范中移除。DOMConfiguration接口及其使用的document.domConfig属性均已被移除;它们从未得到支持,并且已从 DOM 规范中移除。hashchange事件现在正确地包含newURL和oldURL字段。FileReader接口的abort()方法现在在没有文件读取进行时使用会抛出异常。window.postMessage()方法现在使用 结构化克隆算法,让您可以从一个窗口传递 JavaScript 对象,而不仅仅是字符串。window.historyAPI 现在使用 结构化克隆算法 来序列化您传递给pushState()和replaceState()方法的对象;这让您可以使用更复杂的对象(包括包含循环引用图的对象)。- 您现在可以通过监听新的
beforeprint和afterprint事件来检测何时启动和完成打印。 document.strictErrorChecking属性已被移除,因为它从未实现并已从 DOM 规范中移除。- 现在支持标准
event.defaultPrevented属性;您应该使用它而不是非标准的getPreventDefault()方法来检测是否在事件上调用了event.preventDefault()。 window.top属性现在是只读的。- DOM 视图,我们从未记录过,已被移除。这是一个不必要的复杂化的问题,所以我们删除了它。如果您注意到此更改,您可能做错了什么。
EventTarget函数addEventListener()的useCapture参数现在是可选的,与 WebKit 中一样(并根据规范的最新版本)。XMLHttpRequest对象的mozResponseArrayBuffer属性已被responseType和response属性替换。- 已将
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
<mstyle>的实现已更正。
可访问性 (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
nsCOMArray<T>现在有一个RemoveObjectsAt()方法,用于一次从数组中删除多个对象。
从 chrome 使用 DOM
- 在 chrome 代码中使用 DOM File API
-
尽管您始终可以从 chrome 代码中使用 DOM File API,但
File构造函数现在在从 chrome 使用时支持指定本地路径名字符串。此外,您还可以使用nsIFile对象指定要使用 DOM File 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(),它克隆不带 ref 成员的nsIURI,以及nsIURI.equalsExceptRef(),它比较另一个nsIURI时忽略 ref 成员。
新接口
mozIAsyncFavicons-
一项新服务,允许您异步访问收藏夹服务。
nsIEventSource-
详情待定。
nsIGSettingsCollection-
详情待定。
nsIGSettingsService-
详情待定。
nsIHttpUpgradeListener-
用于通过
nsIHttpChannelInternal.HTTPUpgrade()方法处理 HTTP 升级请求的回调接口。 nsIStructuredCloneContainer-
用于存储已使用 结构化克隆算法 序列化的对象的容器。
nsITelemetry-
实现遥测支持,允许记录遥测数据,用于呈现直方图以进行性能跟踪。参见 Firefox bug 649502 和 Firefox bug 585196。
nsITimedChannelnsIWebSocketListenernsIWebSocketProtocol
已移除的接口
以下接口是不再需要的实现细节
nsIDOMDocumentEvent(参见 Firefox bug 655517)nsIDOMDocumentTraversal(参见 Firefox bug 655514)nsIDOMDocumentRange(参见 Firefox bug 655513)IWeaveCrypto(参见 Firefox bug 651596)nsIDOM3DocumentEvent(参见 Firefox bug 481863)nsIDOMAbstractViewnsILiveTitleNotificationSubjectnsIPlugin(参见 Firefox bug 637253)nsIPluginInstance(参见 Firefox bug 637253)nsIHTMLEditRules(参见 Firefox bug 633750)nsIXSLTProcessorObsolete(参见 Firefox bug 649534)
其他更改
- 从应用程序代码使用首选项
-
提供了一个新的静态 API,用于轻松访问首选项;这仅适用于应用程序代码,不能由附加组件使用。