Firefox 3.6 开发者指南
Firefox 3.6 支持新的和正在开发的 Web 标准,提高了性能,并为 Web 用户和开发者带来了整体更好的体验。此页面提供了指向涵盖 Firefox 3.6 新功能的文章的链接。
面向网站和应用程序开发者
CSS
- 使用渐变
-
Firefox 3.6 添加了对提议的
-moz-linear-gradient
和-moz-radial-gradient
属性的支持,用于background
。 - 多个背景
-
background
属性(以及background-color
、background-image
、background-position
、background-repeat
和background-attachment
)现在支持多个背景。这允许您指定多个背景,这些背景以图层形式彼此叠加渲染。 - Mozilla 特定的媒体特性
-
已添加了用于 Mozilla 特定系统指标的媒体特性,以便 媒体查询 可以更安全地检查诸如触摸支持等功能的可用性。
- 缩放背景图像
-
来自 CSS 3 背景和边框草案 的
background-size
属性现在以-moz-background-size
的名称得到支持。 - WOFF 字体支持
-
@font-face
现在支持 WOFF 可下载字体文件格式。 - 指针事件
-
pointer-events
属性允许内容指定元素是否可以成为鼠标指针事件的目标。
其他 CSS 更改
- 来自 CSS3 值和单位 的
rem
长度单位现在得到支持。 Firefox 错误 472195 image-rendering
支持图像、背景图像、视频和画布。 Firefox 错误 423756text-align
:end 现在得到支持。 Firefox 错误 299837- 使用表格
display
类型元素的 DOM 更改现在工作得更好。 - 添加了
:-moz-locale-dir(ltr)
和:-moz-locale-dir(rtl)
以便于根据用户界面是使用从左到右还是从右到左的区域设置显示来自定义布局。 Firefox 错误 478416 - 添加了对
:indeterminate
伪类的支持,该伪类匹配indeterminate
属性为true
的checkbox
input
元素。 - 窗口化插件不再显示在 CSS 变换中,因为合成器无法正确变换它们。
HTML
- 使用 Web 应用程序中的文件
-
Gecko 已添加对新的 HTML5 文件 API 的支持,使 Web 应用程序能够访问用户选择的文件。这包括使用
input type="file"
HTML 元素的新multiple
属性选择多个文件。 - HTML5 视频支持海报帧
-
poster
属性现在受video
元素支持,允许内容指定在视频开始播放之前显示的海报帧。 -
类型为
checkbox
和radio
的 HTMLinput
元素现在支持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 窗口上的新
mozInnerScreenX
和mozInnerScreenY
属性;这些属性返回窗口视口左上角的屏幕坐标。 nsIDOMWindowUtils
接口上的新mozScreenPixelsPerCSSPixel
属性(仅限 chrome 访问)提供了 CSS 像素和屏幕像素之间的转换系数;此值会根据内容的缩放级别而变化。- 当页面的 URI 的文档片段标识符(#(哈希)字符之后的部分)发生更改时,会向页面发送新的
hashchange
事件。有关详细信息,请参阅hashchange
事件。 Firefox 错误 385434 - 现在支持
document.readyState
属性。 Firefox 错误 347174 - 支持 HTML5 的
element.classList
以便于处理 class 属性。 Firefox 错误 501257 - HTML 文档中的
localName
和namespaceURI
现在与 XHTML 文档中的行为相同:localName
返回小写,HTML 元素的namespaceURI
为"http://www.w3.org/1999/xhtml"
。 element.getElementsByTagNameNS
不再将参数转换为小写,因此参数中的大写 ASCII 字母会导致与 HTML 元素的匹配失败。对于document.getElementsByTagNameNS
也是如此。- 已添加了对地理位置中地址的支持,方法是使用
nsIDOMGeoPositionAddress
接口并在nsIDOMGeoPosition
中添加了一个新字段。 window.getComputedStyle
函数现在返回url()
值中的引号。
XPath
面向 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
枚举来枚举语句上的所有属性。 mozIStorageStatement
的getParameterIndex
在 3.5 和 3.6 之间更改了行为。-
有关详细信息,请参阅 Firefox 错误 528166。
- 异步绑定多组参数并执行语句。
-
详情请参见 Firefox 错误 490085。文档即将推出。
首选项
nsIContentPrefService
接口新增了两个方法:nsIContentPrefService.getPrefsByName()
和nsIContentPrefService.removePrefsByName()
。
主题
有关主题相关的更改列表,请参见 Firefox 3.6 主题更新。
其他
- 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
属性。 loadOneTab
和addTab
方法现在接受一个新的relatedToCurrent
参数,此外,还允许通过名称指定参数,因为几乎所有参数都是可选的。- 安装清单中不再支持“hidden”属性;不再可能阻止用户在附加组件管理器窗口中看到附加组件。
@mozilla.org/webshell;1
组件不再存在;您需要改为使用@mozilla.org/docshell;1
。- 您现在可以注册更新计时器类别以安排计时器事件,而无需实例化计时器最终将调用的对象;而是在需要时实例化它。有关详细信息,请参见
nsIUpdateTimerManager.registerTimer()
。 NPN_GetValue()
函数不再通过变量值NPNVserviceManager
、NPNVDOMelement
和NPNVDOMWindow
提供对 XPCOM 的访问。这是朝着在 Gecko 的未来版本中使插件在单独进程中运行的目标迈出的一步。- 插件不再可以通过 XPCOM (IDL) 接口进行脚本化,NPRuntime 是用于使插件可脚本化的 API,并且不再使用值为
NPPVpluginScriptableInstance
或NPPVpluginScriptableIID
的NPP_GetValue()
。这是朝着在 Gecko 的未来版本中使插件在单独进程中运行的目标迈出的一步。
面向 Firefox/Gecko 开发者
某些更改只有在您处理 Firefox 本身的内部结构时才真正有趣。
合并的接口
以下接口已合并在一起
nsIPluginTagInfo2
已合并到nsIPluginTagInfo
中。nsIPluginInstanceInternal
、nsIPPluginInstancePeer
、nsIPluginInstancePeer1
、nsIPluginInstancePeer2
和nsIPluginInstancePeer3
均已合并到nsIPluginInstance
中。nsIWindowlessPlugInstPeer
已合并到nsIPluginInstance
中。nsIPluginManager
和nsIPluginManager2
已合并到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()
现在会在选择指定行之前正确删除任何当前选择。