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