Firefox 3.6 开发者指南

Firefox 3.6 支持新的和正在开发的 Web 标准,提高了性能,并为 Web 用户和开发者带来了整体更好的体验。此页面提供了指向涵盖 Firefox 3.6 新功能的文章的链接。

面向网站和应用程序开发者

CSS

使用渐变

Firefox 3.6 添加了对提议的 -moz-linear-gradient-moz-radial-gradient 属性的支持,用于 background

多个背景

background 属性(以及 background-colorbackground-imagebackground-positionbackground-repeatbackground-attachment)现在支持多个背景。这允许您指定多个背景,这些背景以图层形式彼此叠加渲染。

Mozilla 特定的媒体特性

已添加了用于 Mozilla 特定系统指标的媒体特性,以便 媒体查询 可以更安全地检查诸如触摸支持等功能的可用性。

缩放背景图像

来自 CSS 3 背景和边框草案background-size 属性现在以 -moz-background-size 的名称得到支持。

WOFF 字体支持

@font-face 现在支持 WOFF 可下载字体文件格式。

指针事件

pointer-events 属性允许内容指定元素是否可以成为鼠标指针事件的目标。

其他 CSS 更改

HTML

使用 Web 应用程序中的文件

Gecko 已添加对新的 HTML5 文件 API 的支持,使 Web 应用程序能够访问用户选择的文件。这包括使用 input type="file" HTML 元素的新 multiple 属性选择多个文件。

HTML5 视频支持海报帧

poster 属性现在受 video 元素支持,允许内容指定在视频开始播放之前显示的海报帧。

复选框和单选按钮支持 indeterminate 属性

类型为 checkboxradio 的 HTML input 元素现在支持 indeterminate 属性,该属性允许第三种“不确定”状态。

可以控制画布图像平滑

新的 mozImageSmoothingEnabled 属性可用于在 canvas 元素中缩放时打开和关闭图像平滑。

异步脚本执行

通过在 script 元素上设置 async 属性,script 不会阻止页面其余部分的加载或显示。而是 script 在下载完成后立即执行。

JavaScript

Gecko 1.9.2 引入了 JavaScript 1.8.2,它添加了 ECMAScript 5 标准 中的一些语言特性

  • Date.parse() 现在可以解析像 YYYY-MM-DD 这样的 ISO 8601 日期。
  • 函数实例的 prototype 属性不再可枚举。

DOM

Web 工作线程现在可以自行终止

工作线程 现在支持 nsIWorkerScope.close() 方法,该方法允许它们自行终止。

拖放现在支持文件

提供给拖动监听器的 DataTransfer 对象现在包含一个被拖动文件的列表。

检查元素是否匹配指定的 CSS 选择器

新的 element.mozMatchesSelector 方法允许您确定元素是否匹配指定的 CSS 选择器。请参阅 Firefox 错误 518003

检测设备方向

如果设备具有受支持的加速度计,则内容现在可以使用 MozOrientation 事件检测设备的方向。Firefox 3.6 支持 Mac 笔记本电脑中的加速度计。

检测文档宽度和高度更改

只要文档的 scrollWidth 和/或 scrollHeight 属性发生更改,就会分派新的 MozScrollAreaChanged 事件。

其他 DOM 更改

  • getBoxObjectFor() 方法已被删除,因为它是非标准的,并且向 Web 公开了更多非标准的内容。请参阅 Firefox 错误 340571。也影响了使用此调用进行 Gecko 检测的 MooTools;这已在 MooTools 的最新版本中修复,因此请确保更新。
  • 已添加 DOM 窗口上的新 mozInnerScreenXmozInnerScreenY 属性;这些属性返回窗口视口左上角的屏幕坐标。
  • nsIDOMWindowUtils 接口上的新 mozScreenPixelsPerCSSPixel 属性(仅限 chrome 访问)提供了 CSS 像素和屏幕像素之间的转换系数;此值会根据内容的缩放级别而变化。
  • 当页面的 URI 的文档片段标识符(#(哈希)字符之后的部分)发生更改时,会向页面发送新的 hashchange 事件。有关详细信息,请参阅 hashchange 事件。 Firefox 错误 385434
  • 现在支持 document.readyState 属性。 Firefox 错误 347174
  • 支持 HTML5 的 element.classList 以便于处理 class 属性。 Firefox 错误 501257
  • HTML 文档中的 localNamenamespaceURI 现在与 XHTML 文档中的行为相同:localName 返回小写,HTML 元素的 namespaceURI"http://www.w3.org/1999/xhtml"
  • element.getElementsByTagNameNS 不再将参数转换为小写,因此参数中的大写 ASCII 字母会导致与 HTML 元素的匹配失败。对于 document.getElementsByTagNameNS 也是如此。
  • 已添加了对地理位置中地址的支持,方法是使用 nsIDOMGeoPositionAddress 接口并在 nsIDOMGeoPosition 中添加了一个新字段。
  • window.getComputedStyle 函数现在返回 url() 值中的引号。

XPath

现在支持 choose() XPath 方法

我们实现的 XPath 现在支持 choose() 方法。

面向 XUL 和附加组件开发者

如果您是扩展开发者,您应该首先阅读 更新 Firefox 3.6 的扩展,其中提供了对可能影响您的扩展的更改的有用概述。插件开发者应该阅读 更新 Firefox 3.6 的插件

新功能

检测设备方向

如果设备具有受支持的加速度计,则内容现在可以使用 MozOrientation 事件检测设备的方向。Firefox 3.6 支持 Mac 笔记本电脑中的加速度计。

监控 HTTP 活动

您现在可以监控 HTTP 事务以实时观察请求和响应。

使用 Windows 任务栏

现在可以自定义 Windows 7 或更高版本中任务栏中窗口的外观。此功能在 Firefox 3.6 中默认已禁用。

位置

  • 位置查询现在可以使用 nsINavHistoryQueryOptions 接口上的 redirectsMode 属性来指定是否在结果中包含重定向的页面。
  • 将新的 nsIFaviconService.expireAllFavicons() 方法添加到 nsIFaviconService 接口。

存储

存储 API 现在支持区域感知数据排序。

Gecko 1.9.2 添加了几种新的排序方法,以使用区域感知技术提供优化的结果排序。

现在可以枚举语句上的属性

您现在可以使用 for...in 枚举来枚举语句上的所有属性。

mozIStorageStatementgetParameterIndex 在 3.5 和 3.6 之间更改了行为。

有关详细信息,请参阅 Firefox 错误 528166

异步绑定多组参数并执行语句。

详情请参见 Firefox 错误 490085。文档即将推出。

首选项

  • nsIContentPrefService 接口新增了两个方法:nsIContentPrefService.getPrefsByName()nsIContentPrefService.removePrefsByName()

主题

有关主题相关的更改列表,请参见 Firefox 3.6 主题更新

轻量级主题

Firefox 3.6 支持轻量级主题;这些主题易于创建,可将背景应用于浏览器窗口的顶部(URL栏和按钮栏)和底部(状态栏)。这是将现有的 Personas 主题架构集成到 Firefox 中。

其他

  • Firefox 将不再加载安装在其内部组件目录中的第三方组件。这有助于通过防止执行有问题的第三方组件来确保稳定性。以这种方式安装组件的开发者必须 将其组件重新打包为 XPI 包,以便可以将其作为标准附加组件安装。
  • 扩展程序不再支持使用 contents.rdf 注册 chrome。现在必须改为使用 chrome.manifest 文件。请参见 Firefox 错误 492008
  • 添加了自动隐藏菜单栏的支持。请参见 Firefox 错误 477256
  • 添加了对对象 container-live-role 属性的支持。请参见 Firefox 错误 391829
  • 已删除 tabs-closebutton 绑定。请参见 Firefox 错误 500971
  • nsISound 添加了基于已发生事件播放声音的支持。请参见 Firefox 错误 502799
  • nsITreeView 方法 nsITreeView.canDrop()nsITreeView.drop() 的语法已更改,以支持 Gecko 1.9 中引入的新拖放 API。请参见 Firefox 错误 455590
  • 添加了在 Windows 上将鼠标光标捕捉到对话框或向导的默认按钮的支持,请参见 Firefox 错误 76053。对话框和向导元素会自动处理此操作。但是,如果 XUL 应用程序使用 window 元素创建窗口并且该窗口具有默认按钮,则需要在窗口的 onload 事件处理程序中调用 nsIDOMChromeWindow.notifyDefaultButtonLoaded
  • nsILocalFileMac 接口已删除两个方法:setFileTypeAndCreatorFromMIMEType()setFileTypeAndCreatorFromExtension()
  • 新的 NetUtils.jsm 代码模块提供了一种易于使用的异步方法,用于将数据从输入流复制到输出流。
  • 新的 openLocationLastURL.jsm 代码模块使读取和更改“打开位置”对话框的记住的 URL 的值变得容易,同时正确地考虑了私密浏览模式。
  • 在 Windows 上,当图形驱动程序声称使用 32 位时,nsIScreen 接口现在报告 24 位每像素颜色深度,因为 24 更准确地表示实际使用的颜色像素数。
  • 现在可以在 Windows 上隐藏菜单栏,方法是在 <xul:toolbar> XUL 元素上使用新的 autohide 属性。
  • loadOneTabaddTab 方法现在接受一个新的 relatedToCurrent 参数,此外,还允许通过名称指定参数,因为几乎所有参数都是可选的。
  • 安装清单中不再支持“hidden”属性;不再可能阻止用户在附加组件管理器窗口中看到附加组件。
  • @mozilla.org/webshell;1 组件不再存在;您需要改为使用 @mozilla.org/docshell;1
  • 您现在可以注册更新计时器类别以安排计时器事件,而无需实例化计时器最终将调用的对象;而是在需要时实例化它。有关详细信息,请参见 nsIUpdateTimerManager.registerTimer()
  • NPN_GetValue() 函数不再通过变量值 NPNVserviceManagerNPNVDOMelementNPNVDOMWindow 提供对 XPCOM 的访问。这是朝着在 Gecko 的未来版本中使插件在单独进程中运行的目标迈出的一步。
  • 插件不再可以通过 XPCOM (IDL) 接口进行脚本化,NPRuntime 是用于使插件可脚本化的 API,并且不再使用值为 NPPVpluginScriptableInstanceNPPVpluginScriptableIIDNPP_GetValue()。这是朝着在 Gecko 的未来版本中使插件在单独进程中运行的目标迈出的一步。

面向 Firefox/Gecko 开发者

某些更改只有在您处理 Firefox 本身的内部结构时才真正有趣。

合并的接口

以下接口已合并在一起

  • nsIPluginTagInfo2 已合并到 nsIPluginTagInfo 中。
  • nsIPluginInstanceInternalnsIPPluginInstancePeernsIPluginInstancePeer1nsIPluginInstancePeer2nsIPluginInstancePeer3 均已合并到 nsIPluginInstance 中。
  • nsIWindowlessPlugInstPeer 已合并到 nsIPluginInstance 中。
  • nsIPluginManagernsIPluginManager2 已合并到 nsIPluginHost 中。

已删除的接口

以下接口已完全删除,因为它们未被使用、未实现或已过时

  • nsIFullScreen
  • nsIDOMSVGListener
  • nsIDOMSVGZoomListener
  • nsIInternetConfigService
  • nsIDKey
  • nsIEventHandler
  • nsIJRILiveConnectPIPeer
  • nsIJRILiveConnectPlugin
  • nsIScriptablePlugin
  • nsIClassicPluginFactory
  • nsIFileUtilities

移动的接口

以下接口已从其以前的 IDL 文件重新定位到新的 IDL 文件中

  • nsIDOMNSCSS2Properties 现在位于其自己的 IDL 文件 (dom/interfaces/css/nsIDOMCSS2Properties.idl) 中。
  • nsIUpdateTimerManager 现在位于其自己的 IDL 文件中。

许多接口已被移动。有关完整列表,请参见 Firefox 3.6 中移动的接口

其他接口更改

已进行以下各种更改

  • nsIPlugin 接口现在继承自 nsISupports 而不是 nsIFactory
  • nsIPluginHost 接口现在继承自 nsISupports 而不是 nsIFactory
  • nsIFrame 接口现在继承自 nsQueryFrame 而不是 nsISupports
  • 已删除 nsIDeviceContext 方法 getPaletteInfo(),因为它从未实现过。
  • 已删除 nsIScriptContext 方法 reportPendingException(),因为它不再使用。

辅助功能代码中的更改

  • 当框架和 iframe 的子级更改以及主文档的子级更改时,现在会发送 EVENT_REORDER 辅助功能事件。请参见 Firefox 错误 420845
  • nsIAccessibleTable.selectRow() 现在会在选择指定行之前正确删除任何当前选择。

另请参阅