Chrome 55 Beta發布:支持 async/await,輸入處理改進
Chrome 55 Beta 發布了:輸入處理改進、Async 和 await 功能、CSS 自動斷字。
1、輸入處理改進
隨 著移動網絡使用的普及,網站對觸摸輸入做出良好反應的重要性也日益增加。在過去,這意味單獨處理 MouseEvent 和 TouchEvent,而這種方式可能難以維護。現在,Chrome 通過分派 PointerEvents 事件,支持統一的輸入處理方式。默認情況下,PointerEvents 不會阻止滾動,因而頁面響應更迅速。為使用 TouchEvent 實現相同的性能,頁面可以使用被動事件偵聽器。
Chrome 現在還支持兩種全新的輸入響應方式。touch-action CSS 屬性讓網站能夠響應手勢,例如平移。對于鼠標按鈕,新的 auxclick 輸入事件類型允許網站管理非主要按鈕的點擊行為。
2、Async 和 await
異 步 JavaScript 可能比較難以推導。Promise 可幫助避免回調嵌套問題,但是,當網站存在大量異步依賴時,基于 Promise 的代碼仍可能難以讀取。Chrome 現在支持 async 和 await JavaScript 關鍵字,允許開發者編寫基于 Promise、可加以結構化并以同步代碼形式讀取的 JavaScript。
提取 URL 并使用 Promise 記錄響應:
- function logFetch(url) {
- return fetch(url)
- .then(response => response.text())
- .then(text => {
- console.log(text);
- }).catch(err => {
- console.error('fetch failed', err);
- });
- }
使用 async 和 await 的相同代碼:
- async function logFetch(url) {
- try {
- const response = await fetch(url);
- console.log(await response.text());
- }
- catch (err) {
- console.log('fetch failed', err);
- }
- }
3、CSS 自動斷字
對 于各種設備和屏幕尺寸,要設置文本格式以使其填充可用空間可能都是一項挑戰。Chrome 現在支持 CSS 自動斷字,這是 Android 版和 Mac 版 Chrome 最常請求的布局功能之一。CSS 斷字允許瀏覽器在自動換行時用連字號斷字,從而提升文本塊的視覺一致性。在未來版本中,斷字支持將擴展到其他平臺。
4、此版本中的其他特性
- once 事件偵聽器選項支持僅在移除事件偵聽器之前調用一次回調。
- 現在,網站可以將網絡存儲標記為***性存儲,從而防止 Chrome 自動清除該網站的存儲。
- 現在,在 Android 系統上,跨源 iframe 需要用戶手勢方可使用 Web Audio API 啟動音頻播放,以確保與 <audio> 和 <video> 元素匹配。
- TLS 協議棧現在實現 GREASE,后者是一種幫助防止因 TLS 服務器存在錯誤而出現問題的機制。
- 開發者可以另一種方式使用新的 JavaScript 構造函數創建 MediaStreamTrackEvent。
- TLS 中已添加 RSA-PSS 簽名算法,為 TLS 1.3 做好了準備。
- 為縮短加載時間,避免導航失敗,使用 document.write() 注入的跨源和解析器阻塞腳本將不再通過 2G 連接進行加載。
- 現在還提供 new AudioNode(context, options) 格式的 AudioNode 構造函數,更易于通過腳本管理音頻。
- 當媒體播放器太窄,無法顯示每個按鈕時,將顯示一個溢出菜單,向用戶提供隱藏的功能。
- 現在,當播放所關聯的文件可供下載時,Chrome 媒體控件將顯示一個下載按鈕。
- Web Share API 現在可作為來源試用版加以體驗。
5、棄用項和互操作性的改善
- BaseAudioContext 將替代 Web Audio API 中的 AudioContext,以符合規范要求。
- CSS Clipping Path 屬性不再需要 webkit 前綴。
- 除了現有的 webkitMediaStream,現在還提供 MediaStream 構造函數,并且無需使用前綴。
- 非腳本 MIME 類型 將不再觸發腳本執行。
- <textarea maxlength=””> 和 <textarea minlength=””> 已經更新為將每個換行符計為一個字符,而非兩個字符。
- webkit 前綴已經從 CanvasRenderingContext2D 的 imageSmoothingEnabled 屬性中移除。