适用于开发者的 Firefox 7 发行说明
Firefox 7 于 2011 年 9 月 27 日发布。本文提供了影响开发者(包括 Web 内容开发者和 Firefox 附加组件开发者)的变更信息。
Web 开发人员的变更
HTML
- 已移除
HTMLHeadElement的profile属性,该属性自 Gecko 2.0 起已被弃用。 - 已移除
HTMLImageElement的x和y属性。 HTMLSelectElement的add()方法中的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操作clear和over的支持。 - 阴影现在只为
source-over合成操作绘制。 - 您现在可以通过设置上下文上的
mozFillRule属性来配置 Canvas 使用的填充规则。 - 已添加对实验性
mozDash、mozDashOffset、mozCurrentTransform和mozCurrentTransformInverse属性的支持。 - 已移除对非标准方法
mozDrawText()、mozMeasureText()、mozPathText()和mozTextAlongPath()的支持。
CSS
- 现在支持
text-overflow。 -moz-orient属性已修复,以便垂直方向的<progress>元素具有适当的默认尺寸。
MathML
DOM
- 已移除
File接口的非标准方法getAsBinary()、getAsDataURL()和getAsText(),以及非标准属性fileName和fileSize(Firefox bug 661876)。 - 当使用
Blob设置数据时,FormData接口在发送Content-DispositionHTTP 头时不再将文件名报告为空字符串。这修复了某些服务器上发生的错误。 HTMLelement.dir属性现在始终以全小写形式返回其结果,符合 HTML 规范要求。- 现在已实现
FileReader的readAsArrayBuffer()方法。 Document.createEntityReference已移除。它从未正确实现,并且在大多数其他浏览器中也未实现。document.normalizeDocument已移除。请改用Node.normalize。- 如果
index超出范围,DOMTokenList.item现在返回undefined,之前它返回null。 Node.getFeature已移除。HTMLInsElement和HTMLDelElement接口已移除,因为<ins>和<del>元素实际上使用HTMLModElement接口。- 为了符合即将发布的 DOM4 规范(其中
Attr不再继承自Node,它在 DOM Core 1、2 和 3 中继承),Attr接口上的许多Node属性和方法现在会报告警告,我们正在努力在后续版本中移除它们。 - 在
window对象上添加了对ondeviceorientation和ondevicemotion属性的支持。 window.resizeTo、window.resizeBy、window.moveTo和window.moveBy不再适用于主窗口。
JavaScript
Function.arity属性已移除;请改用Function.length。
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
- 除了之前支持的
text/xsl,XSLT 样式表现在可以使用官方的互联网媒体 (MIME) 类型application/xslt+xml(在样式表处理指令或HTTP Link 头字段中)。
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 代码模块。
内存报告器
已添加对多报告器的支持;即,按请求收集数据并为每个生成的结果调用回调的内存报告器。请参阅 nsIMemoryMultiReporter 和 nsIMemoryMultiReporterCallback 以了解相关接口,以及 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 661574和Firefox bug 661573)使用nsITelemetry.newHistogram()定义的遥测直方图将不会在遥测 ping 中报告。nsIMemoryReporter接口已大幅更改;如果您使用它,您将需要对您的代码进行一些调整。nsIXMLHttpRequest中,通过nsIXMLHttpRequest.setRequestHeader()设置的头在重定向时会随请求发送。之前这些头不会发送。nsIDocShell有一个新属性allowWindowControl。如果为true,则允许 docshell 的内容控制窗口(即移动或调整窗口大小)。nsIThreadInternal2接口已合并到nsIThreadInternal接口中。
新接口
nsIDOMFontFace-
描述单个字体。
nsIDOMFontFaceList-
描述字体列表,每个字体由
nsIDOMFontFace表示。
已移除的接口
以下接口是不再需要的实现细节
nsIDOM3AttrnsIDOM3NodensIDOM3TypeInfonsIDOM3TextnsIDOMDocumentStylensIDOMNSDocumentnsIDOMNSFeatureFactorynsIDOMNSHTMLDocumentnsIDOMNSHTMLFormElementnsIDOMNSHTMLHRElementnsIDOMNSHTMLTextAreaElement
以下接口作为 ActiveX 嵌入 API 移除的一部分而被移除
DITestScriptHelperDWebBrowserEventsDWebBrowserEvents2IDispatchIMozControlBridgeIMozPluginHostCtrlIWebBrowserIWebBrowser2IWebBrowserAppIXMLDocumentIXMLElementIXMLElementCollectionIXMLErrornsIActiveXSecurityPolicynsIDispatchSupportnsIMozAxPluginnsIScriptEventHandlernsIScriptEventManager