Chrome 86 在2020年10月推出了穩定版,現已全面應用於Android、Chrome OS、Linux、macOS 和 Windows等平臺,我們一起來看下這次的重要更新。

若要看全部更新,請移步(https://www。chromestatus。com/features#milestone=86)。

新增穩定功能

檔案系統訪問

還記得Chrome 83中的本地檔案系統嗎,當時的試驗功能,現已穩定。透過呼叫

showOpenFilePicker

方法,你可以喚起檔案選擇視窗,進而透過返回的檔案控制代碼對檔案進行讀寫。程式碼如下:

async function getFileHandle() {

const opts = {

types: [

{

description: ‘Text Files’,

accept: {

‘text/plain’: [‘。txt’, ‘。text’],

‘text/html’: [‘。html’, ‘。htm’]

}

}

};

return await window。showOpenFilePicker(opts);

}

在寫檔案之前,瀏覽器會檢查使用者是否已授權寫檔案,若未授權,會先彈窗提示使用者,再進行後續操作。

2020年10月 Chrome 86 重要更新解讀

特別的是,呼叫

showDirectoryPicker

方法會開啟檔案目錄,允許你獲取多個檔案,或者在目錄中建立檔案。這很適合IDE、媒體播放器等應用。

全面阻止所有非HTTPS混合內容下載

HTTPS混合內容錯誤是指初始網頁透過安全的HTTPS連結載入,但頁面中其他資源,比如影象,影片,樣式表,指令碼卻透過不安全的HTTP連結載入,這樣就會出現混合內容錯誤,也就是不安全因素。

攻擊者可攔截不安全的下載地址,將程式替換成惡意軟體、甚至訪問更多的敏感資訊。為管控這些風險,谷歌最終還是決定在Chrome中禁止載入不安全資源。

2020年10月 Chrome 86 重要更新解讀

從 M82 開始,Chrome 就逐步警告及阻止混合內容的下載,到 M86,會完全阻止下載,時間表如下:

2020年10月 Chrome 86 重要更新解讀

要想排查網站的混合內容,使用 Chrome 訪問網頁,開啟開發者工具,選擇“Security”-“Non-Secure Origin”,就可以看到Mixed Content(小編身邊的網站都是安全的,暫時沒找到例子,請各位自行發掘)。

另外,從 M86 開始,圖片型別的請求,會自動升級到 HTTPS,並且沒有 HTTP 的降級,Audio/Video 型別的請求早在 M80 就開始進行了自動升級。

ParentNode。replaceChildren

目前,要想替換某DOM節點下的全部子節點,必須要先透過 innerHTML 或 removeChild 刪除全部子節點,然後再逐個新增,比較麻煩。為此,Chrome 支援了 replaceChildren 方法,可以用引數中的子節點列表替換原有的全部子節點,程式碼如下:

parentNode。replaceChildren(newChildren);

更多資訊,請移步

更醒目的 HTTP 安全警告

在我們訪問 HTTPS 網頁時,位址列最左側會顯示一個鎖定圖示來表明當前網站是安全的,但如果 HTTPS 網頁中嵌入的是並不安全的 HTTP 表單,瀏覽器則不會給出任何提示資訊。而實際上已經有釣魚網站透過這種方式來盜取使用者的敏感資訊了。

所以在 Chrome 86 中,如果 HTTPS 的網頁中嵌入了不安全的 HTTP 表單,表單欄位下方會有極為醒目的「此表單不安全」文字提示。

2020年10月 Chrome 86 重要更新解讀

如果你無視提示警告繼續提交表單資訊,則會看到一個確認警告頁面,告知你即將提交的資訊並不安全。

2020年10月 Chrome 86 重要更新解讀

後臺標籤頁更省電

如果一個標籤頁在後臺運行了五分鐘以上,這個頁面就會被暫時凍結,相應的 CPU 使用也會被限制在 1% 左右;如果頁面支援自動重新整理,喚醒時間被限制在每一分鐘一次。

新增試用功能

WebHID

HID(Human Interface Device),人機介面裝置。有很多長尾的HID,或者太新,或者太舊,或者不常見,導致無法被系統驅動支援。WebHID API,提供了透過JavaScript訪問這些裝置的方法。這會大大便利web遊戲的操作性,可以使用搖桿、手柄、感測器、震動反饋等等裝置。

呼叫的程式碼如下:

butOpenHID。addEventListener(‘click’, async (e) => {

const deviceFilter = { vendorId: 0x0fd9 };

const opts = { filters: [deviceFilter] };

const devices = await navigator。hid。requestDevice(opts);

myDevice = devices[0];

await myDevice。open();

myDevice。addEventListener(‘inputreport’, handleInpRpt);

});

當然,這些強大的API必須要使用者授權才能呼叫。

多屏 Placement API

目前,你可以呼叫

window。screen()

來獲取瀏覽器所在螢幕,但如果你有多個螢幕,只能獲取當前所在的螢幕。

API呼叫方式及返回結果如下所示:

const screen = window。screen;

console。log(screen);

// {

// availHeight: 1612,

// availLeft: 0,

// availTop: 23,

// availWidth: 3008,

// colorDepth: 24,

// orientation: {。。。},

// pixelDepth: 24,

// width: 3008

// }

新推出的多屏 Placement API,允許你列舉電腦連線的所有螢幕,並且可以把瀏覽器視窗放置在特定的螢幕上。這會大大便利幻燈片以及金融相關應用。

在使用API之前,需要先請求許可,第一次請求時會向用戶彈窗。

async function getPermission() {

const opt = { name: ‘window-placement’ };

try {

const perm = await navigator。permissions。query(opt);

return perm。state === ‘granted’;

} catch {

return false;

}

}

獲得授權後,呼叫

window。getScreens()

會返回 Screen 物件列表。

const screens = await window。getScreens();

console。log(screens);

// [

// {id: 0, internal: false, primary: true, left: 0, 。。。},

// {id: 1, internal: true, primary: false, left: 3008, 。。。},

// ]

:focus-visible

新的CSS選擇器,允許你修改預設的focus樣式,程式碼如下:

/* Focusing the button with a keyboard will

show a dashed black line。 */

button:focus-visible {

outline: 4px dashed black;

}

/* Focusing the button with a mouse, touch,

or stylus will show a subtle drop shadow。 */

button:focus:not(:focus-visible) {

outline: none;

box-shadow: 1px 1px 5px rgba(1, 1, 0, 。7);

}

對於列表項的數字或原點,可以使用

::marker

偽元素,來改變其顏色、尺寸、形狀等資訊。

除此之外,還可以在設定介面選擇「設定 > 高階 > 無障礙 > 短暫地突出顯示焦點物件」,選擇之後,焦點元素周圍會有閃爍的藍光,提供更為醒目的資訊提示。

2020年10月 Chrome 86 重要更新解讀

2020年10月 Chrome 86 重要更新解讀

廢棄&刪除的功能

刪除 WebComponents v0

Chrome 80版本已經在桌面和安卓端移除了 WebComponents v0,Chrome 86 進一步把它從WebView移除。這項移除包括Custom Elements v0, Shadow DOM v0, 和 HTML Imports。

移除對FTP的支援

Chrome FTP功能的使用量較低,而且實現有bug,存在安全隱患,何況各平臺都有更好用的FTP客戶端,不值得繼續維護。所以從 M72 開始,Chrome 便已著手閹割 FTP 功能,先是去掉了 HTTP 代理,現在又開始完全移除 FTP 支援,據計劃,到 Chrome 88,FTP 功能會被徹底禁用。

參考文獻

https://

developers。google。com/w

eb/updates/2020/10/nic86

https://

blog。chromium。org/2020/

09/chrome-86-improved-focus-highlighting。html

https://

sspai。com/post/63084

https://

blog。p2hp。com/archives/

7490

https://

web。dev/file-system-acc

ess/

——————————————————————————————————————————

阿里巴巴集團淘系技術部官方賬號。淘系技術部是阿里巴巴新零售技術的王牌軍,支撐淘寶、天貓核心電商以及淘寶直播、閒魚、躺平、阿里汽車、阿里房產等創新業務,服務9億使用者,賦能各行業1000萬商家。我們打造了全球領先的線上新零售技術平臺,並作為核心技術團隊保障了11次雙十一購物狂歡節的成功。

點選下方主頁關注我們,你將收穫更多來自阿里一線工程師的技術實戰技巧&成長經歷心得。另,不定期更新最新崗位招聘資訊和簡歷內推通道,歡迎各位以最短路徑加入我們。