Chrome 58測試版釋出,有哪些新特性?

谷歌開發者_發表於2017-03-26

640?wx_fmt=gif


文 | IndexedDB 開發者 Victor Costan

 

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

640?wx_fmt=jpeg


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,提供完全沉浸式的體驗。


640?wx_fmt=png▲ 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 屬性,因為它未得到廣泛採用。


更多詳情,請點選文末“閱讀原文”。


推薦閱讀:

使用WebGL 2.0更快地渲染 3D

AMP 影響力不斷增強

在macOS上擴充套件對Chrome使用者的保護

Chrome 57 Beta 新特性


640?wx_fmt=png


3.26 Google Doodle: 2017 年孟加拉國獨立日

640?wx_fmt=png

640?wx_fmt=gif

相關文章