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
属性现在反映元素文本内容的值,如果未指定该属性。
画布
- 作为 Azure 项目 的一部分,Direct2D Azure 后端 已实现,并将显着提高 2D 画布的性能。
- 在调用
setTransform()
、bezierCurveTo()
或arcTo()
时指定无效值不再抛出异常;这些调用现在被正确地静默忽略。 isPointInPath()
方法现在在将指定点与当前路径进行比较时会正确考虑变换矩阵。- 使用零宽度和高度调用
strokeRect()
现在正确地什么都不做。 - 使用零宽度或高度的
<canvas>
调用drawImage()
现在会抛出INVALID_STATE_ERR
。 - 使用非有限坐标调用
drawImage()
不再抛出异常。 toDataURL()
方法现在接受第二个参数来控制 JPEG 质量。- 已移除对非标准
globalCompositeOperation
操作clear
和over
的支持。 - 现在仅针对
source-over
合成操作绘制 阴影。 - 您现在可以通过在上下文中设置
mozFillRule
属性 来配置画布使用的填充规则。 - 已添加对实验性
mozDash
、mozDashOffset
、mozCurrentTransform
和mozCurrentTransformInverse
属性的支持。 - 已移除对非标准方法
mozDrawText()
、mozMeasureText()
、mozPathText()
和mozTextAlongPath()
的支持。
CSS
- 现在支持
text-overflow
。 - 已修复
-moz-orient
属性,以便垂直方向的<progress>
元素具有适当的默认尺寸。
MathML
DOM
File
接口的非标准方法getAsBinary()
、getAsDataURL()
和getAsText()
以及非标准属性fileName
和fileSize
(Firefox 错误 661876) 已移除。- 如果使用
Blob
设置数据,则FormData
接口不再将文件名报告为空字符串,同时发送Content-Disposition
HTTP 标头。这修复了一些服务器上发生的错误。 HTMLelement.dir
属性现在始终以全小写形式返回其结果,如 HTML 规范要求。- 现在已实现
FileReader
的readAsArrayBuffer()
方法。 - 已移除
Document.createEntityReference
。它从未正确实现,并且在大多数其他浏览器中也没有实现。 - 已移除
document.normalizeDocument
。请改用Node.normalize
。 DOMTokenList.item
现在在index
超出范围时返回undefined
,以前返回null
。- 已移除
Node.getFeature
。 - 已移除
HTMLInsElement
和HTMLDelElement
接口,因为<ins>
和<del>
元素实际上使用HTMLModElement
接口。 - 为了符合即将发布的 DOM4 规范,其中
Attr
不再继承自Node
(它在 DOM Core 1、2 和 3 中是这样),Attr
接口上的许多Node
属性和方法 现在正在报告警告,因为我们正在努力在以后的版本中将其移除。 - 添加了对
ondeviceorientation
和ondevicemotion
属性的支持,这些属性位于window
对象上。 window.resizeTo
、window.resizeBy
、window.moveTo
和window.moveBy
不再应用于主窗口。
JavaScript
- 已移除
Function.arity
属性;请改用Function.length
。
WebSockets
network.websocket.max-connections
首选项用于确定一次可以打开的最大 WebSocket 连接数。默认值为 200。- 现在使用底层的 WebSocket 协议版本 8(如 IETF 草案 10 中所指定),而不是 Firefox 6 使用的版本 7 协议。
- WebSocket API 现在在 Firefox 移动版上可用。
控制台 API
- 使用
console.log
记录的消息,当 Web 控制台 未打开时仍会记录,尽管在打开 Web 控制台时不会显示它们。
Web 定时
- 导航定时 规范的初始实现,提供可用于衡量网站性能的数据。
XML
- 除了以前支持的
text/xsl
之外,XSLT 样式表现在可以使用官方互联网媒体(MIME)类型application/xslt+xml
(在 样式表处理指令 或 HTTP Link 标头字段 中)。
针对 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 代码模块。
内存报告器
已添加对多报告器的支持;也就是说,根据请求收集数据的内存报告器,并为每个生成的結果调用回调。请参阅 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 地址。这些更改用于实现用于改进尝试连接到同时支持 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 错误 661574 和Firefox 错误 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