Chrome 60 Beta 有哪些新特性?

谷歌開發者_發表於2017-06-20

640?wx_fmt=gif

640?wx_fmt=jpeg


除非另外註明,否則,下面介紹的更改均適用於最新 Chrome Beta 渠道版(Android、Chrome 作業系統、Linux、Mac 和 Windows)。



Paint Timing API

儘管並沒有公認的標準能夠在所有情況下完美地反映頁面的載入時間,First Paint and First Contentful Paint 仍然為衡量頁面載入期間關鍵的使用者參與環節提供了極具價值的資料。為了讓開發者更好地洞察網站的載入效能,全新的 Paint Timing API 公開了捕獲 First Paint and First Contentful Paint 的指標。


640?wx_fmt=png

▲ Google.com 的 First Paint and First Contentful Paint 截圖,摘自 Google I/O 2017 上釋出的《網路效能:挖掘最影響使用者體驗的指標》(Web Performance: Leveraging the Metrics that Most Affect User Experience)



CSS font-display

可下載的網頁字型經常用於建立視覺效果更豐富多彩的網頁體驗。歷史上,為了確保視覺正確性,Chrome 一直延遲渲染文字,直至有指定的字型可用。然而,在網路連線不佳的情況下,下載字型可能需要幾秒鐘的時間,嚴重延遲了使用者檢視內容的時間。現在,Chrome 支援 CSS @font-face 描述符和相應的 font-display 屬性,允許開發者指定 Chrome 在下載字型時如何以及何時顯示文字內容。



Credential Management API 的改進

為響應廣大開發者的反饋,也為了使 Credential Management API 更易於用於所有網站,現在已不再需要自定義 fetch() 來訪問儲存的密碼。從 Chrome 60 開始,使用者的密碼現在將直接作為 PasswordCredential 的一部分返回。


此外,為了更好地呼應我們在網路身份驗證工作組中所做的工作,我們還做出了一系列更改。這包括棄用 requireUserMediation,已將其重新命名為 preventSilentAccess。



此版本中的其他特性

  • 現在,桌面版的 Chrome 也支援 Payment Request API。

  • 現在,網站可以通過使用 Payment Request API 的原生 Android 支付應用來收款。

  • 現在支援物件的 Rest 和 Spread 屬性,這簡化了物件的合併和淺度克隆以及各種不可變物件圖案的實現。

  • 藉助於全新 Web Budget API,具有推送通知許可權的網站將能夠傳送有限數量的推送訊息,這些推送訊息可以觸發同步資料或關閉使用者已在其他裝置上處理過的通知(而無需顯示對使用者可見的通知)之類的後臺任務。

  • 現在支援全新 Web Push Encryption 格式,可使用 PushManager.supportedContentEncodings 來檢測該格式的使用位置。

  • 現在提供 PushSubscription.expirationTime,可通知網站某個訂閱何時過期以及是否過期。

  • 為了改善效能和可預測性,現在,每個 AnimationFrame 傳遞一次 pointermove 和 mousemove 事件,這與 scroll 和 TouchEvents 事件的當前功能相符。

  • 現在提供 :focus-within CSS 偽類,會影響:focus 偽類影響的任何元素以及受 :focus 影響的子類的任何元素。

  • 現在提供 CSS 幀時序功能,對於動畫應以完全相同的時長顯示所有幀(包括頭幀和尾幀)的動畫迴圈非常有用。

  • 為了提供一種捕獲編輯操作的增強方法,InputEvent 現在允許通過指令碼來管理使用者輸入,豐富了提供給可編輯元素的細節。

  • 為了提高安全性,現在,僅在幀嘗試顯示其已收到使用者手勢或使用者互動時,才會顯示使用者離開網站時所觸發的 BeforeUnload 對話方塊,儘管仍然會分派 BeforeUnloadEvent。

  • 現在,可以隨 MP4 (ISO BMFF) 容器 一起使用 VP9 這一開放、免版權的視訊編碼格式,該格式需要下面提到的最新 VP9 字串格式。

  • 現在提供一種全新的 VP9 字串格式,各種與媒體有關的 API 均接受該格式,這使得開發者能夠描述各種視訊編解碼器中共用、但尚未公開的編碼屬性。

棄用和互操作性的改善

  • getElementsByTagName() 現在接受符合限定條件的名稱,以響應針對 DOM 規範的一項更新。

  • 現在,/deep/ 的行為類似於 descendant 組合符,事實上就是一個空操作。

  • 為了改善使用者體驗,現在,如果使用者未明確點按幀或任何嵌入幀,則對 Navigator.vibrate() 的呼叫會立即返回 false,這與 cross-origin iframes 的行為相同。

  • WEBKIT_KEYFRAME_RULE 和 WEBKIT_KEYFRAMES_RULE 已移除,代之以無字首的標準化 API,即 KEYFRAME_RULE 和 KEYFRAMES_RULE。

  • 現已從 document.createEvent() 移除對非標準 WebKitAnimationEvent 和 WebKitTransitionEvent 的支援。

  • 為了更好地符合規範,NodeIterator.filter 和 TreeWalker.filter 不再包裝 JavaScript 物件,並且已從 window.NodeFilter 移除 .prototype。

  • 正在移除 RTCPeerConnection.getStreamById(),推薦使用 polyfill 代替原方法。

  • SVGPathElement.getPathSegAtLength() 已被棄用,因為它已從 SVGPathElement 規格中移除。

  • 已從 Fetch API 移除Headers.prototype.getAll(),以適應從規範中移除該方法。


瞭解更多詳情,檢視文內所有連結(文件),請點選文末“閱讀原文”。


640?wx_fmt=gif

點選「閱讀原文」,檢視文內連結640?wx_fmt=gif

相關文章