Firefox 7 开发者指南

Firefox 7 于 2011 年 9 月 27 日发布。本文提供了有关影响开发人员(Web 内容和 Firefox 附加组件)的更改的信息。

针对 Web 开发者的更改

HTML

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

画布

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

CSS

MathML

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

DOM

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

JavaScript

WebSockets

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

控制台 API

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

Web 定时

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

XML

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

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

注意:Firefox 7 要求重新编译二进制组件,就像所有主要版本的 Firefox 一样。

JavaScript 代码模块

FileUtils.jsm

  • 新方法 openFileOutputStream() 打开一个文件输出流(非安全变体)以进行写入。

AddonManager.jsm

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

XUL

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

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 地址。这些更改用于实现用于改进尝试连接到同时支持 IPv4 和 IPv6 的主机(特别是那些 IPv6 连接出现故障的主机)的响应时间的“快乐眼球”策略
  • inIDOMUtils 有两个新方法,inIDOMUtils.getChildrenForNode() 返回节点的子节点列表,以及 inIDOMUtils.getUsedFontFaces() 返回范围内使用的字体列表。
  • nsIMarkupDocumentViewer_MOZILLA_2_0_BRANCH 接口已合并到 nsIMarkupDocumentViewer 接口中。
  • nsIDOMWindow2 接口已合并到 nsIDOMWindow 接口中。
  • nsIDOMWindow_2_0_BRANCH 接口已合并到 nsIDOMWindowInternal 接口中。
  • nsINavHistoryObserver 具有 URI 参数的方法现在也需要一个 GUID。
  • nsISHistory_2_0_BRANCH 接口已合并到 nsISHistory 接口中。
  • nsITelemetry 有一个新方法 nsITelemetry.getHistogramById(),它根据 ID 返回直方图,以及一个新属性 canRecord,当设置为 false 时,它会禁用遥测统计信息的记录。在隐私浏览模式下,不再记录遥测统计信息。(请参阅Firefox 错误 661574Firefox 错误 661573)使用 nsITelemetry.newHistogram() 定义的遥测直方图不会在遥测 ping 中报告。
  • nsIMemoryReporter 接口已发生重大更改;如果您使用它,则需要对代码进行一些调整。
  • nsIXMLHttpRequest,通过 nsIXMLHttpRequest.setRequestHeader() 设置的标头在跟随重定向时会随请求一起发送。以前这些标头不会发送。
  • nsIDocShell 有一个新的 allowWindowControl 属性。如果为 true,则允许文档外壳的内容控制窗口(即移动或调整窗口大小)。
  • 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 对其进行样式设置。

另请参阅