Web 开发人员的变更
HTML
- 已添加
HTMLImageElementcrossOrigin属性,并且已将crossorigin属性添加到<img>元素中。(参见 Firefox 错误 664299) HTMLSelectElement.add()方法现在支持在新项目插入之前指定一个项目或项目的索引。以前它只支持指定一个项目。(参见 Firefox 错误 666200)HTMLIsIndexElement构造函数已被移除。自 Firefox 4 之前,没有元素实现过此接口。- 现在支持 HTML5“上下文菜单”功能(
contextmenu属性),它允许你向原生上下文菜单添加自定义元素特定项目(此实现仍处于实验阶段,等待规范更改;参见 Firefox 错误 617528)。 - 已为所有元素添加了对
HTMLElement.accessKeyLabel属性的支持。 <input>和<textarea>元素现在支持selectionDirection属性,并且它们的setSelectionRange()方法已更新,以支持可选地指定方向。- 如果大多数元素已通过使用
tabindex属性变得可聚焦,并且用户随后聚焦了该元素,则会在其周围绘制焦点环。 - 在一组嵌套的
<label>元素中,点击事件不再触发多个
DOM
insertAdjacentHTML方法已实现。BlobBuilder现在有一个getFile()方法,该方法将 Blob 的内容作为文件返回。FileReaderSync接口(FileAPI 的一部分)已实现。- 嵌套
<label>中的事件处理已修复。 - 你现在可以使用
window.postMessage()在窗口之间传递File和FileList对象。 - 在编辑
contenteditable区域时,通过按回车键退出标题,或通过按两次回车键退出列表编辑模式,现在会返回到段落输入模式(即<p>块内的段落),而不是通过<br>元素分隔行。 - 修复了一个错误,该错误导致在应用于
contenteditable区域的第一行时,对齐无法正确生效。 - 修复了一个错误,该错误导致在
contenteditable区域开头按下删除或退格键时,如果存在上一个contenteditable块,则会影响该块。 Document.getSelection()现在返回与window.getSelection()相同的Selection对象,而不是将其字符串化。- HTML5
selectionDirection属性使得可以定义可编辑文本中选择的方向。 HTMLMediaElement现在有一个seekable属性,它返回一个TimeRanges对象。HTMLMediaElement.preload属性现在正确地反映为枚举值。- 当使用无效值时,
crossOrigin属性默认为“Anonymous”。 - 当默认 Cookie 设置按站点覆盖时,
navigator.cookieEnabled现在返回正确的信息。
JavaScript
- 不带参数调用
RegExp.exec()和RegExp.test()现在会与字符串“undefined”进行匹配。 - 不带参数或带
undefined参数调用String.search()和String.match()现在会与空字符串进行匹配,从而匹配所有字符串。 - 通过新的(非标准)
watch()和unwatch()方法实现了对监视列表的支持。
CSS
- 根据规范,
<resolution>现在接受<number>,而不仅仅是<integer>值。 - 在使用
hyphens时,已为许多新语言添加了连字符规则。 background-size的处理已修订,以更接近规范。- 过去,怪异模式下
text-decoration的行厚度和位置会根据后代文本进行调整。现在,标准模式和怪异模式的渲染更加相似。 - 在许多情况下,元素的水平定位已更符合规范。此文档即将推出,但目前请参见 Firefox 错误 682780,评论 23 了解详细信息。
- 当用作背景图像时,SVG 图像现在可以正确缩放。
网络
WebSocket
WebSocket对象的send()方法不再错误地返回布尔值。WebSocket对象的close()方法现在与标准的当前草案匹配,并且关闭事件现在正确使用CloseEvent接口。- 现在支持
WebSocket对象的extensions属性。 - WebSocket 构造函数现在支持协议数组以及单个协议字符串。
- WebSocket 不允许混合内容;也就是说,你不能再从安全内容打开与非安全 WebSocket 服务器的连接。
- WebSocket 的连接错误现在会触发
onerror处理程序。 - WebSocket API 已更新到规范的最新草案(参见 Firefox 错误 674890、Firefox 错误 674527 和 Firefox 错误 674716)。
- WebSocket 的 deflate-stream 扩展已被禁用;它已被弃用,并且破坏了与某些站点的兼容性。
WebGL
- 现在可以通过 CORS 批准允许跨域纹理。
- 使用 Direct2D/Direct3D 10 的跨进程渲染。
MathML
开发者工具
console对象有一个新的dir()方法,它显示指定对象属性的交互式列表。
Mozilla 和附加组件开发者的更改
有关您可能需要使附加组件与 Firefox 8 兼容的更改指南,请参见更新 Firefox 8 的附加组件。
注意: Firefox 8 要求重新编译二进制组件,所有主要的 Firefox 版本都如此。
XPCOM
Components.utils-
已创建新的方法
Components.utils.createObjectIn()和Components.utils.makeObjectPropsNormal(),以便更容易在特定隔离区中创建对象。
其他 XPCOM 相关更改
- 你现在可以通过
new File从组件代码实例化 DOMFile对象,而无需直接实例化nsIDOMFile。 nsTPtrArray数组类型已被移除。其功能现在都可在nsTArray上获得,nsTArray在使用指针类型实例化时现在提供SafeElementAt()方法。
Worker
不再可能从 ChromeWorker 访问 XPCOM 对象。自 Firefox 错误 649537 起,XPConnect 已在工作线程上下文中禁用。
XUL
- 在对
contentDocument的值调用document.execCommand()时出现的错误已修复。自 Firefox 3 以来,这已导致错误而不是正常工作。 - 自举附加组件现在可以使用
chrome.manifest文件加载 chrome。 - 指定最大尺寸时,XUL 图像现在在两个方向上以相同的比例缩小。
构建系统更改
-
以下构建配置选项已被移除
--enable-timeline--disable-storage--necko-disk-cache
-
将 IDL 文件编译为头文件时,如果需要,会自动包含头文件
jspubtd.h。在使用 jsval 或 [implicit_jscontext] 的 IDL 文件中手动包含jspubtd.h和/或jsapi.h不再需要。
Chrome 注册
platformversion标志可在 chrome.manifest 中用于指定 Gecko 版本兼容性。
接口更改
mozIJSSubScriptLoader.loadSubScript()方法现在尽可能从启动缓存加载脚本。ownerWindow属性已从nsIAccessNode接口中移除。nsIDOMStorageWindow接口已合并到nsIDOMWindow接口中。nsIDOMWindowInternal接口的所有成员都已移至nsIDOMWindow接口。该接口本身(不带成员)仍可用于兼容性,直到 Firefox 9。- 为了提高性能,Places 数据库异步更新的回调处理已更改。参见新的
mozIVisitInfoCallback.handleResult()和mozIVisitInfoCallback.handleError()方法,它们取代了旧的用于错误和成功条件处理的单一方法。 nsIMemoryReporter的KIND_MAPPED属性已被弃用,取而代之的是KIND_NONHEAP,添加了新的单位类型UNITS_COUNT_CUMULATIVE和UNITS_PERCENTAGE。nsIMemoryReporterManager接口有一个新的explicit属性,它报告显式内存分配的总大小。nsIMemoryReporterManager接口有一个新的resident属性,它报告使用的物理内存量。nsINetworkLinkService接口有一个新的属性linkType。此属性提供正在使用的网络连接类型。所有操作系统目前都返回LINK_TYPE_UNKNOWN。Android 支持因 perceived 安全问题而被撤回。nsISelection2接口已合并到nsISelectionPrivate接口中。nsISelection3接口已合并到nsISelection接口中。- 由于性能原因,
nsISessionStartup属性状态现在是jsval而不是字符串。 - 对于最小化窗口,
nsIDocShell属性isActive现在为false。 nsIDownloadHistory.addDownload()方法现在保存下载在本地文件系统中的目标。
已移除的接口
以下接口是不再需要的实现细节
nsITimelineServicensIDOMHTMLIsIndexElement
nsIWorkerFactory 接口也已被移除。仍然可以使用 Worker 和 ChromeWorker 构造函数创建 Worker。
其他更改
- 当窗口最小化、取消最小化或在全屏和窗口模式之间切换时,它会收到一个
sizemodechange事件。 - 您现在可以使用
extensions.autoDisableScopes首选项来禁用来自特定附加组件安装位置的附加组件的自动安装。 Document对象上的新mozSyntheticDocument属性可让您确定文档是否是合成的(即,像独立的图像、视频或音频文件一样),而不是完整、标准的 DOM 文档。这可能很有用,例如,如果您想在这种情况下呈现不同的用户界面(例如,根据这种情况以不同的方式添加上下文项目)。- 您现在可以在打开
about:config时指定过滤器;例如,about:config?filter=sessionstore将仅显示与会话存储相关的首选项。