距离Chrome 57正式版发布仅17天时间,昨日,Chrome 58测试版已经新鲜出炉,并通过谷歌开发者公众号发布了更新详情。

Chrome 58测试版主要针对IndexedDB 2.0、改进iframe导航、PWA沉浸式全屏体验等几方面进行了改进和升级,此外还包括其它大量新特性,具体如下:

除非另外注明,否则下面介绍的更改均适用于最新 Chrome Beta 渠道版(Android、Chrome 操作系统、Linux、Mac 和 windows)。

IndexedDB 2.0

现在,Chrome 完全支持 IndexedDB 2.0 标准,在此浏览器中,可以更轻松地处理大数据集。IDB 2.0 采用新的架构管理和批量操作方法,故障处理方式也更标准化。

网站数据库的结构对性能的影响很大,而且很难改变。为简化更新操作,现在,在重构后,可以原地重命名对象存储和索引。网站也可以使用更多自然关键字,而无需担心性能受到影响,因为二进制关键字可压缩自定义关键字表示。

使用getKey() 和 openKeyCursor() 方法,可以简化数据检索,在只需一个数据库关键字时,还可提升性能。使用新的 continuePrimaryKey() 游标方法,可以更轻松地分割跨事务、跨页面加载的大数据访问,而不必担心出现重复的主键。getAll() 和 getAllKeys() 方法无需使用游标,即可批量恢复整个数据集。

改进 iframe 导航

自动重定向页面的第三方内容(例如广告)可能给用户带来困扰,带来安全问题。因此,开发者可以将第三方内容置于沙盒化的 iframes 中,避免出现此状况。但是,在某些情况下,与标准广告类似,点击此类内容需要导航顶级页面。

为解决此问题,Chrome 58 现在支持新的 iframe 沙盒关键字 allow-top-navigation-by-user-activation。此关键字使沙盒化的 iframes 在用户交互操作触发时能够导航顶级页面,同时阻止自动重定向。

PWA 沉浸式全屏体验

当 Progressive Web App (PWA) 从 Android 主屏幕启动时,这些 PWA 会以一种类似于独立应用的模式启动,此模式下会隐藏多功能框。这有助于营造一种富有吸引力的用户体验,并释放屏幕空间,以显示更多内容。但是,对于游戏、视频播放器或其他富媒体内容等更沉浸式的体验,系统栏等其他移动 UI 元素仍然会分散用户注意力。

现在,PWA 可以在其网络应用清单中设置 display: fullscreen,在网站从主屏幕启动时隐藏非应用 UI,提供完全沉浸式的体验。

Chrome 58测试版发布 新特性众多

PWA 从主屏幕启动(左)、PWA 在独立模式下从主屏幕启动(中)和 PWA 在全屏模式下从主屏幕启动(右)。

此版本中的其他特性

— 现在,工作线程和共享工作线程可以使用 data: 网址进行创建,通过为其赋予不透明的来源,可更安全地利用工作线程进行开发。

—通过PointerEvents.getCoalescedEvents(),开发者可以访问上次提交 PointerEvent 以来的所有输入事件,使绘图应用可以更轻松地使用精确的点记录绘制更平滑的曲线。

—现在,开发者可以使用新的 ControlsList API,自定义 Chrome 的原生媒体控件,例如 download、fullscreen 和 remoteplayback 按钮。

—对于 Chrome(Android 版),使用改进的添加到主屏幕工作流安装的网站将可以不受限制地自动播放通过清单范围中包含的来源提供的音频和视频。

—对于 Chrome(Android 版),使用 autoplay 属性的视频在退出屏幕时将暂停播放,返回屏幕将继续播放,以保持跨浏览器的连贯性。

—现在,网站可以使用 color-gamut Media Query,获取 Chrome 和输出设备支持的颜色的大致范围。

—现在,无需手动重置 float 和 clear 等多种布局属性,网站可以使用 display: flow-root 添加一种新的块格式设置上下文。

—为缩短 JavaScript 分析时间,SVGPoint、SVGRect 和 SVGMatrix 已转移至 Geometry 外部的新界面中。

—使用新的 Selection API 函数 removeRange(),开发者现在可以通过编程移除指定的文本范围。

—现在 Chrome(Mac 版)支持 PointerEvent.tangentialPressure 和PointerEvent.twist 属性,可为触控笔设备和绘画应用提供更多信息。

—为简化开发者体验,现在 JavaScript 允许在形式参数和实际参数列表中使用终止逗号。

—WebAudio API 新的播放AudioContextLatencyCategory 使开发者可以轻松地在延迟时间、功耗和 CPU 效率之间做出有意识的权衡。

弃用和互操作性的改善

—Apple-interchange-newline、Apple-converted-space、Apple-paste-as-quotation、Apple-style-span 和 Apple-tab-span 已被弃用,因为它们是非标准 CSS 类。

—usemap 属性现在使用区分大小写的匹配方式,而不使用兼容不区分大小写,以更好地符合相关规范。

—现在,根据 Chrome 针对一些重要功能的政策,使用 Notifications API 请求通知权限或创建非永久本地通知时,网站必须使用 HTTPS。

—为了更好地符合相关规范,现在当 cancelBubble 设置为 true 时被视为 stopPropagation() 的别名,在设置为 false 时则不执行任何操作。

—VTTRegion 界面函数 addRegion() 和 removeRegion() 已从 WebVTT 规范中移除,因此也将从 Chrome 中移除。

—导航至 data: 网址的顶级页面的功能已被弃用,以进一步防止用户受到欺骗和钓鱼式攻击。

—HTMLEmbedElement 或 HTMLObjectElement 的实例不再可以作为函数调用,因为旧版调用程序已被移除。

—在 IETF 将这些算法标准化为 RFC 7539 和 RFC 7905 以及随后在 Chrome 41 中发布标准版本后,移除了标准化前的 ChaCha20-Poly1305 密码。

—为改善互操作性,如果增加的范围与现有范围重叠,Selection.addRange() 现在会忽略前者,而不是将两个范围合并。

—根据 Chrome 针对一些重要功能的政策以及根据相关规范,已弃用通过不安全来源传输加密媒体扩展。

—AudioBuffer 构造函数现在允许使用 AudioBufferOptions 词典的sampleRate 成员代替 context 参数,以简化界面,同时强调可以在 AudioContexts 之间共享 AudioBuffers。

—现已在服务工作线程中弃用同步 FileReaderSync API,因为服务工作线程规范要求所有类型的同步请求都应在服务工作线程外部发起。

—现在 abbr 和 acronym 元素默认添加点式下划线,以符合 HTML 标准。

—现已移除motion-path、motion-offset 和 motion-rotation CSS 属性,分别由以下新版本取代:offset-path、offset-distance 和 offset-rotate。

—在访问 selectionDirection、selectionStart 和 selectionEnd 等 Selection API 属性时,Chrome 原本会引发 InvalidStateError DOMException,但现在返回 null。

—现在,Selection API 的 setBaseAndExtent() 不会在无提示的情况下限制过大的偏移值,而是引发 IndexSizeError DOMException,以更好地符合相关规范。

—现在,Selection API 的 setBaseAndExtent()、extend() 和 collapse() 不会因 DocumentType 节点输入而在无提示的情况下失败,而是引发 InvalidNodeTypeError DOMException,以更好地符合相关规范。

—为更好地符合相关规范,getRangeAt() 现在始终返回新的位置规范化的 Range。

—现已移除 AudioSourceNode 接口,因为它不再属于 WebAudio 规范。

—现已移除 webkitdropzone 属性,因为它未得到广泛采用。

(编辑:899电脑网)