适用于开发者的 Firefox 7 发行说明

Firefox 7 于 2011 年 9 月 27 日发布。本文提供了影响开发者(包括 Web 内容开发者和 Firefox 附加组件开发者)的变更信息。

Web 开发人员的变更

HTML

  • 已移除 HTMLHeadElementprofile 属性,该属性自 Gecko 2.0 起已被弃用。
  • 已移除 HTMLImageElementxy 属性。
  • HTMLSelectElementadd() 方法中的 before 参数现在是可选的。
  • <body> 元素的 background 属性不再被解析为 URI;这符合当前的 HTML 规范。
  • 如果未指定 <option> 元素的 label 属性,则该属性现在会反映元素的文本内容值。

Canvas

  • 作为 Azure 项目的一部分,Direct2D Azure 后端 已实现,这将显著提高 2D Canvas 的性能。
  • 在调用 setTransform()bezierCurveTo()arcTo() 时指定无效值不再抛出异常;这些调用现在会被正确地静默忽略。
  • isPointInPath() 方法在将指定点与当前路径进行比较时,现在会正确考虑变换矩阵。
  • 调用 strokeRect() 时宽度和高度为零,现在会正确地不执行任何操作。
  • 调用 drawImage() 时,如果 <canvas> 的宽度或高度为零,现在会抛出 INVALID_STATE_ERR
  • 调用 drawImage() 时使用非有限坐标,不再抛出异常。
  • toDataURL() 方法现在接受第二个参数来控制 JPEG 质量。
  • 已移除对非标准 globalCompositeOperation 操作 clearover 的支持。
  • 阴影现在只为 source-over 合成操作绘制。
  • 您现在可以通过设置上下文上的 mozFillRule 属性来配置 Canvas 使用的填充规则。
  • 已添加对实验性 mozDashmozDashOffsetmozCurrentTransformmozCurrentTransformInverse 属性的支持。
  • 已移除对非标准方法 mozDrawText()mozMeasureText()mozPathText()mozTextAlongPath() 的支持。

CSS

MathML

  • XLink href 已恢复,并且现在支持 MathML3 的 href 属性。鼓励开发者转向后一种语法。
  • 已添加对 <mpadded> 元素上的 voffset 属性的支持,并修复了 lspace 属性的行为。
  • 顶级 <math> 元素现在接受 <mstyle> 元素的任何属性。
  • 已添加对 Asana Math 字体的支持。
  • <mfrac> 元素中分数线的中等粗细已纠正以匹配默认粗细。
  • 现在支持负空间名称

DOM

  • 已移除 File 接口的非标准方法 getAsBinary()getAsDataURL()getAsText(),以及非标准属性 fileNamefileSizeFirefox bug 661876)。
  • 当使用 Blob 设置数据时,FormData 接口在发送 Content-Disposition HTTP 头时不再将文件名报告为空字符串。这修复了某些服务器上发生的错误。
  • HTMLelement.dir 属性现在始终以全小写形式返回其结果,符合 HTML 规范要求。
  • 现在已实现 FileReaderreadAsArrayBuffer() 方法。
  • Document.createEntityReference 已移除。它从未正确实现,并且在大多数其他浏览器中也未实现。
  • document.normalizeDocument 已移除。请改用 Node.normalize
  • 如果 index 超出范围,DOMTokenList.item 现在返回 undefined,之前它返回 null
  • Node.getFeature 已移除。
  • HTMLInsElementHTMLDelElement 接口已移除,因为 <ins><del> 元素实际上使用 HTMLModElement 接口。
  • 为了符合即将发布的 DOM4 规范(其中 Attr 不再继承自 Node,它在 DOM Core 1、2 和 3 中继承),Attr 接口上的许多 Node 属性和方法现在会报告警告,我们正在努力在后续版本中移除它们。
  • window 对象上添加了对 ondeviceorientationondevicemotion 属性的支持。
  • window.resizeTowindow.resizeBywindow.moveTowindow.moveBy 不再适用于主窗口。

JavaScript

WebSocket

  • network.websocket.max-connections 首选项用于确定可以同时打开的最大 WebSocket 连接数。默认值为 200。
  • 现在使用底层 WebSocket 协议版本 8(由 IETF 草案 10 指定),而不是 Firefox 6 使用的版本 7 协议。
  • WebSocket API 现在可在 Firefox Mobile 上使用。

控制台 API

  • Web 控制台未打开时,使用 console.log 记录的消息仍然会记录,尽管在 Web 控制台打开时它们不会显示。

Web 计时

  • 导航计时规范的初始实现,它提供了可用于测量网站性能的数据。

XML

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

这些更改会影响附加组件开发者以及从事或使用 Mozilla 代码本身的开发者。附加组件开发者应参阅 更新 Firefox 7 附加组件以获取更多信息。

注意: Firefox 7 要求重新编译二进制组件,所有主要的 Firefox 版本都是如此。

JavaScript 代码模块

FileUtils.jsm

  • 新方法 openFileOutputStream() 打开一个文件输出流,即非安全变体,用于写入。

AddonManager.jsm

  • 附加组件管理器新增了用于管理应用程序启动期间更改的附加组件列表的方法:AddonManager.addStartupChange()AddonManager.removeStartupChange()AddonManager.getStartupChanges()

XUL

  • 如果 datasources 引用的节点都具有由“id”属性指定的唯一 ID,则 <tree> 元素现在可以保留展开/折叠三角的状态。
  • <panel> 元素现在可以使用新的 backdrag 属性进行配置,允许用户通过单击其背景的任何位置来拖动它们。

XPCOM

  • 新的 Components.utils.schedulePreciseGC() 方法允许您在未来某个没有 JavaScript 代码执行的时间点调度一个彻底的垃圾回收周期;回收完成后会执行一个回调。
  • Components.utils.unload() 方法允许您卸载之前通过调用 Components.utils.load() 加载的 JavaScript 代码模块。

内存报告器

已添加对多报告器的支持;即,按请求收集数据并为每个生成的结果调用回调的内存报告器。请参阅 nsIMemoryMultiReporternsIMemoryMultiReporterCallback 以了解相关接口,以及 nsIMemoryReporterManager.registerMultiReporter()nsIMemoryReporterManager.unregisterMultiReporter() 方法。

用户体验变化

  • 现在可以在附加组件管理器中显示无重启和传统扩展的扩展选项。
  • 现在按站点记住下载目的地。此数据可以使用 DownloadLastDir.jsm 访问。

构建系统的变化

  • 不再构建 ActiveX 嵌入 API,并且已从构建系统中移除支持。支持接口也已移除;请参阅已移除的接口
  • 在 Windows 上构建时,您不应再指定 -Zc:wchar_t-

接口更改

  • nsISocketTransport 现在提供了一个新的连接标志:DISABLE_IPV6;这导致套接字只尝试连接到 IPv4 地址,忽略任何可用的 IPv6 地址。此外,nsIDNSService 现在提供了一个新的解析标志:RESOLVE_DISABLE_IPV6;这导致域名解析只考虑 IPv4 主机,忽略任何可用的 IPv6 地址。这些更改用于实现“happy eyeballs”策略,以提高在支持 IPv4 和 IPv6 的主机(特别是那些 IPv6 连接损坏的主机)上尝试连接时的响应时间。
  • inIDOMUtils 有两个新方法,inIDOMUtils.getChildrenForNode() 返回节点的子节点列表,inIDOMUtils.getUsedFontFaces() 返回范围内使用的字体列表。
  • nsIMarkupDocumentViewer_MOZILLA_2_0_BRANCH 接口已合并到 nsIMarkupDocumentViewer 接口中。
  • nsIDOMWindow2 接口已合并到 nsIDOMWindow 接口中。
  • nsIDOMWindow_2_0_BRANCH 接口已合并到 nsIDOMWindowInternal 接口中。
  • 带有 URI 参数的 nsINavHistoryObserver 方法现在也需要 GUID。
  • nsISHistory_2_0_BRANCH 接口已合并到 nsISHistory 接口中。
  • nsITelemetry 有一个新方法 nsITelemetry.getHistogramById(),它通过 ID 返回直方图,还有一个新属性 canRecord,当设置为 false 时,禁用遥测统计数据的记录。在隐私浏览模式下不再记录遥测统计数据。(参见Firefox bug 661574Firefox bug 661573)使用 nsITelemetry.newHistogram() 定义的遥测直方图将不会在遥测 ping 中报告。
  • nsIMemoryReporter 接口已大幅更改;如果您使用它,您将需要对您的代码进行一些调整。
  • nsIXMLHttpRequest 中,通过 nsIXMLHttpRequest.setRequestHeader() 设置的头在重定向时会随请求发送。之前这些头不会发送。
  • nsIDocShell 有一个新属性 allowWindowControl。如果为 true,则允许 docshell 的内容控制窗口(即移动或调整窗口大小)。
  • nsIThreadInternal2 接口已合并到 nsIThreadInternal 接口中。

新接口

nsIDOMFontFace

描述单个字体。

nsIDOMFontFaceList

描述字体列表,每个字体由 nsIDOMFontFace 表示。

已移除的接口

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

  • nsIDOM3Attr
  • nsIDOM3Node
  • nsIDOM3TypeInfo
  • nsIDOM3Text
  • nsIDOMDocumentStyle
  • nsIDOMNSDocument
  • nsIDOMNSFeatureFactory
  • nsIDOMNSHTMLDocument
  • nsIDOMNSHTMLFormElement
  • nsIDOMNSHTMLHRElement
  • nsIDOMNSHTMLTextAreaElement

以下接口作为 ActiveX 嵌入 API 移除的一部分而被移除

  • DITestScriptHelper
  • DWebBrowserEvents
  • DWebBrowserEvents2
  • IDispatch
  • IMozControlBridge
  • IMozPluginHostCtrl
  • IWebBrowser
  • IWebBrowser2
  • IWebBrowserApp
  • IXMLDocument
  • IXMLElement
  • IXMLElementCollection
  • IXMLError
  • nsIActiveXSecurityPolicy
  • nsIDispatchSupport
  • nsIMozAxPlugin
  • nsIScriptEventHandler
  • nsIScriptEventManager

其他变化

  • 库窗口(places.xul)的结构已清理。这可能会破坏扩展和主题。
  • 打印预览窗口的外观已现代化,鼓励主题作者使用 CSS 伪元素 ::-moz-page::-moz-page-sequence::-moz-scrolled-page-sequence 来对其进行样式设置。