为了跟上新的开发周期,我们今天发布了 Aurora 7。享受它的新功能和性能改进:CSS “text-overflow: ellipsis”,导航计时 API,降低内存使用量,更快的 javascript 解析器 以及 Azure 的第一步,我们的新图形 API。
text-overflow: ellipsis;
现在可以将 Firefox 设置为显示 “…” 来以视觉方式提示文本超过包含它的元素的长度。
导航计时
性能是 Web 上用户体验的关键参数。为了帮助 Web 开发人员有效地监控其 Web 页面的性能,Aurora 7 实现了 导航计时 规范:使用 window.performance.timing
对象,开发人员将能够知道不同导航步骤(例如 navigationStart
、connectStart
/End
、responseStart
/End
、domLoading
/Complete
)发生的时间,并推断完成一个步骤或一系列步骤需要多长时间。
降低内存使用量
我们持续努力监控和降低 Firefox 的内存使用量,将在 Aurora 7 中得到显著回报。
- javascript 对象所在的内存“区域”在创建和删除对象时会变得碎片化。为了减少这种碎片化的负面影响,浏览器自身 UI 创建的长期对象已被与 Web 页面创建的对象分开。当一个标签页被关闭或在 垃圾回收 后,浏览器现在可以更有效地释放内存。
- 说到垃圾回收,随着我们成功地降低了此操作的成本,我们能够更频繁地执行它。不仅内存更迅速地释放,而且这也导致更短的GC 暂停(javascript 执行停止以让垃圾回收器完成其工作的时期,在繁重的动画过程中有时会注意到)。
- 所有这些改进都反映在 about:memory 页面中,该页面现在能够告诉特定 Web 页面或浏览器自身 UI 使用了多少内存。
有关memshrink 工作的更频繁更新和详细说明已发布在 Nicholas Nethercote 的博客 上。
更快的 Javascript 解析
javascript 解析器是浏览器的一部分,它在 javascript 由 javascript 引擎执行之前读取它。随着现代 Web 应用程序(如 Gmail 或 Facebook)发送接近 1Mb 的 javascript,能够立即读取所有这些代码在响应式用户体验的追求中很重要。
由于 Nicholas 的工作,我们的解析器现在比以前快了将近两倍。这与我们持续改进 javascript 引擎的 执行速度 的工作相得益彰。
Azure 的第一步
在布局引擎(Gecko)计算完窗口中所有元素的视觉外观(位置、尺寸、颜色等)后,浏览器请求操作系统实际将它们绘制到屏幕上。浏览器需要一个抽象层来与不同操作系统的不同图形库通信,但该层必须尽可能薄且可适应,以实现硬件加速的承诺。
Azure 是新改进的图形 API/抽象层的名称,它将逐步取代硬件加速环境中的 Cairo。在 Aurora 7 中,它已经能够与 Windows 7 的 Direct2D API 交互以呈现 <canvas> 元素的内容(在 2D 上下文中)。您可以在 Joe Drew 的博客上阅读有关 Azure 项目及其下一步计划 的详细说明。
其他改进
HTML
<a href="https://mdn.org.cn/en/DOM/HTMLHeadElement" rel="custom nofollow">HTMLHeadElement</a>
profile
属性已被删除,此属性自 Gecko 2.0 以来已弃用。(参见 错误 664544)<a href="https://mdn.org.cn/en/DOM/HTMLImageElement" rel="custom nofollow">HTMLImageElement</a>
x
和y
属性已被删除。(参见 错误 587021)<a href="https://mdn.org.cn/en/DOM/HTMLSelectElement" rel="custom nofollow">HTMLSelectElement</a>
add()
方法before
参数现在是可选的。(参见 错误 182279)
Canvas
- 在调用
setTransform()
、bezierCurveTo()
或arcTo()
时指定无效值不再引发异常;这些调用现在已正确地静默忽略。 - 使用零宽度和高度调用
strokeRect
现在正确地什么也不做。(参见 错误 663190) - 使用零宽度或高度
<a href="https://mdn.org.cn/en/HTML/Element/canvas" rel="custom nofollow"><canvas></a>
调用drawImage
现在会引发INVALID_STATE_ERR
。(参见 错误 663194) toDataURL()
方法现在接受第二个参数来控制 JPEG 质量(参见 错误 564388)
CSS
<a href="https://mdn.org.cn/en/CSS/text-overflow" rel="custom nofollow">text-overflow</a>
现在已得到支持。<a href="https://mdn.org.cn/en/CSS/orient" rel="custom nofollow">-moz-orient</a>
属性已修复,因此垂直方向的<a href="https://mdn.org.cn/en/HTML/Element/progress" rel="custom nofollow"><progress></a>
元素具有适当的默认尺寸。
MathML
- XLink href 已恢复,MathML3
href
属性现在已得到支持。鼓励开发人员迁移到后一种语法。 - 对
<a href="https://mdn.org.cn/en/MathML/Element/mpadded" rel="custom nofollow"><mpadded></a>
元素上的voffset
属性的支持已添加,并且lspace
属性的行为已修复。 - 顶级
<a href="https://mdn.org.cn/en/MathML/Element/math" rel="custom nofollow"><math></a>
元素接受<a href="https://mdn.org.cn/en/MathML/Element/mstyle" rel="custom nofollow"><mstyle></a>
元素的任何属性。 <a href="https://mdn.org.cn/en/MathML/Element/mfrac" rel="custom nofollow"><mfrac></a>
元素中分数线的中等线粗细已更正为匹配默认粗细。- 负空间的名称 现在已得到支持。
DOM
<a href="https://mdn.org.cn/en/DOM/File" rel="custom nofollow">File</a>
接口的非标准方法getAsBinary()
、getAsDataURL()
和getAsText()
以及非标准属性fileName
和fileSize
已被删除。<a href="https://mdn.org.cn/en/DOM/FileReader" rel="custom nofollow">FileReader</a>
readAsArrayBuffer()
方法现在已实现。(参见 错误 632255)<a href="https://mdn.org.cn/en/DOM/document.createEntityReference" rel="custom nofollow">document.createEntityReference</a>
已被删除。它从未正确实现,并且在大多数其他浏览器中都没有实现。(参见 错误 611983)document.normalizeDocument
已被删除。改用<a href="https://mdn.org.cn/en/DOM/Node.normalize" rel="custom nofollow">Node.normalize</a>
。(参见 错误 641190)<a href="https://mdn.org.cn/en/DOM/DOMTokenList.item" rel="external">DOMTokenList.item</a>
现在如果index
超出范围,则返回undefined
,以前它返回null
。(参见 错误 529328)Node.getFeature
已被删除。(参见 错误 659053)
JavaScript
<a href="https://mdn.org.cn/en/JavaScript/Reference/Global_Objects/Function/arity" rel="internal">Function.arity()</a>
函数已被删除;改用<a href="https://mdn.org.cn/en/JavaScript/Reference/Global_Objects/Function/length" rel="internal">Function.length</a>
。- JSON 解析器已为提高速度和合规性而重写。这包括对 错误 572279 的修复。
网络
WebSockets
现在在 Firefox Mobile 上可用。(参见 错误 537787)
控制台 API
- 实现
console.<a href="http://getfirebug.com/wiki/index.php/Console_API#console.dir.28object.29">dir()</a>
,console.<a href="http://getfirebug.com/wiki/index.php/Console_API#console.time.28name.29">time()</a>
,console.<a href="http://getfirebug.com/wiki/index.php/Console_API#console.timeEnd.28name.29">timeEnd()</a>
,console.<a href="http://getfirebug.com/wiki/index.php/Console_API#console.group.28object.5B.2C_object.2C_....5D.29">group()</a>
和console.<a href="http://getfirebug.com/wiki/index.php/Console_API#console.groupEnd.28.29">groupEnd()</a>
方法。 - 在 WebConsole 打开之前使用 console.log 记录的消息现在将被存储起来,并在 WebConsole 打开时显示。
(参见 Wiki 中的 Web Console 页面)
关于 louisremi
开发者关系团队,长期 jQuery 贡献者和开放 Web 爱好者。 @louis_remi
27 条评论