Chrome 83 版的新功能

Chrome 83 即將推出穩定版。

以下是一些注意事項:

我是 Pete LePage,在家工作並拍攝影片。現在就讓我們一起來看看 Chrome 83 版為開發人員帶來哪些新功能!

信任的類型

以 DOM 為基礎的跨網站指令碼攻擊是網路上最常見的安全漏洞之一。很容易不小心在網頁中加入這類內容。信任類型可協助防範這類安全漏洞,因為這類類型會要求您先處理資料,再將資料傳遞至可能有危險的函式。

innerHTML 為例,如果已啟用信任類型,當我嘗試傳遞字串時,系統會傳回 TypeError,因為瀏覽器不知道是否可以信任字串。

// Trusted types turned on
const elem = document.getElementById('myDiv');
elem.innerHTML = `Hello, world!`;
// Will throw a TypeError

相反地,我必須使用 textContent 等安全函式,傳入可信任的類型,或是建立元素並使用 appendChild()

// Use a safe function
elem.textContent = ''; // OK

// Pass in a trusted type
import DOMPurify from 'dompurify';
const str = `Hello, world!`;
elem.innerHTML = DOMPurify.sanitize(str, {RETURN_TRUSTED_TYPE: true});

// Create an element
const img = document.createElement('img');
img.src = 'xyz.jpg';
elem.appendChild(img);

開啟信任類型之前,請先使用 report-only CSP 標頭找出並修正任何違規情形。

Content-Security-Policy-Report-Only: require-trusted-types-for 'script'; report-uri //example.com

將所有按鈕都向上按鈕後,你就能妥善開啟這項功能。 如需完整詳細資料,請參閱 web.dev 上的「使用信任類型防範以 DOM 為基礎的跨網站指令碼攻擊漏洞」。

表單控制項更新

我們每天都會使用 HTML 表單控制項,這些控制項是許多網路互動功能的關鍵。這些工具易於使用、內建無障礙功能,且使用者也熟悉這些工具。表單控制項的樣式在不同瀏覽器和作業系統之間可能不一致。我們經常必須提供多個 CSS 規則,才能在各裝置上取得一致的外觀。

Before,表單控制項的預設樣式。
更新後的表單控制項樣式。

微軟一直致力於讓表單控制項的樣式更現代化,這點讓我印象深刻。除了良好的視覺風格外,這類錶面還帶來更優質的觸控支援功能,以及更優質的無障礙設計,包括更完善的鍵盤支援!

新的表單控制項已在 Microsoft Edge 推出,現在也已在 Chrome 83 版推出。詳情請參閱 Chromium 網誌上的表單控制項和焦點更新

來源試用

使用 measureMemory() 測量記憶體

在 Chrome 83 中開始來源試用,performance.measureMemory() 是一種新的 API,可用於評估網頁的記憶體用量,並偵測記憶體流失。

記憶體流失很容易發生:

  • 忘記取消註冊事件監聽器
  • 從 iframe 擷取物件
  • 未關閉 worker
  • 累計陣列中的物件
  • 諸如此類

記憶體耗損會導致網頁載入速度緩慢,並讓使用者覺得網頁內容過多。

if (performance.measureMemory) {
  try {
    const result = await performance.measureMemory();
    console.log(result);
  } catch (err) {
    console.error(err);
  }
}

如要瞭解新 API 的所有詳細資訊,請參閱 web.dev 上的「使用 measureMemory() 監控網頁的總記憶體用量」。

原生檔案系統 API 更新

原生檔案系統 API 在 Chrome 83 中開始新的來源試用,支援可寫入串流,並可儲存檔案句柄。

async function writeURLToFile(fileHandle, url) {
  // Create a FileSystemWritableFileStream to write to.
  const writable = await fileHandle.createWritable();
  // Make an HTTP request for the contents.
  const response = await fetch(url);
  // Stream the response into the file.
  await response.body.pipeTo(writable);
  // pipeTo() closes the destination pipe automatically.
}

可寫入串流可讓您更輕鬆地寫入檔案,而且由於它是串流,您可以輕鬆將回應從一個串流傳送至另一個串流。

將檔案句柄儲存到 IndexedDB,即可儲存狀態,或記住使用者正在處理的檔案。例如保留近期編輯的檔案清單、開啟使用者上次使用的檔案等等。

您需要使用新的來源試用權杖才能使用這些功能,因此請參閱我的最新文章:Native File System API:簡化對 web.dev 的存取作業,並提供所有詳細資訊,以及如何取得新的來源試用權杖。

其他來源試用

請查看原始試用版的完整功能清單。

新的跨來源政策

某些網路 API 會增加 Spectre 等旁路攻擊的風險。為降低這類風險,瀏覽器提供名為「跨來源隔離」的選擇加入式隔離環境。跨來源隔離狀態也會防止修改 document.domain。能夠修改 document.domain 可讓同網站文件之間進行通訊,並被視為相同來源政策的漏洞。

請參閱 Eiji 的文章使用 COOP 和 COEP 讓網站「跨來源隔離」,瞭解完整詳細資訊。

Web Vitals

評估使用者體驗品質有許多面向,雖然使用者體驗的某些層面取決於網站及情境,但有一系列共同的信號 (「網站使用體驗核心指標」) 對所有網站體驗至關重要。這類核心使用者體驗需求包括網頁內容的載入體驗、互動性和視覺穩定性,這些都是 2020 年網站體驗核心指標的基礎。

  • 最大內容繪製用於評估感知的載入速度,並在載入網頁時間軸中標示網頁主要內容可能已載入的時間點。
  • 首次輸入延遲時間可評估網頁的回應速度,並量化使用者首次與網頁互動時的體驗。
  • 累計版面配置位移會評估視覺穩定性,並量化可見網頁內容的意外版面配置位移量。

所有這些指標都會擷取以使用者為本的重要結果,可在實地測試中進行評估,並提供實驗室診斷指標等相關工具。舉例來說,雖然 Largest Contentful Paint 是主要的載入指標,但也極度仰賴首次顯示內容所需時間 (FCP) 和首個位元組回應時間 (TTFB),這兩項指標仍是監控和改善的關鍵。

如需更多資訊,請參閱 Chromium 網誌上的Web Vitals 簡介:診斷網站健康狀態的基本指標,瞭解完整詳情。

其他

想知道未來的發展嗎?詳情請參閱 Fugu API 追蹤程式

延伸閱讀

這份文件僅涵蓋部分重點。請參閱下方連結,瞭解 Chrome 83 的其他異動。

訂閱

如要隨時掌握最新影片,請訂閱 Chrome 開發人員 YouTube 頻道,這樣一來,我們發布新影片時,你就會收到電子郵件通知。

我是 Pete LePage,我需要修剪頭髮,但 Chrome 84 一推出,我就會在這裡告訴你 Chrome 的新功能!