WebView2 功能和 API 概觀

在您的應用程式中內嵌 WebView2 控制件,可讓您的應用程式存取透過 WebView2 類別或介面提供的各種方法和屬性。 WebView2 有數百個 API,提供一組廣泛的功能,範圍從增強應用程式的原生平臺功能,到讓您的應用程式能夠修改瀏覽器體驗。 本文提供 WebView2 API 的高階群組,以協助您瞭解您可以使用 WebView2 執行的不同動作。

最上層功能區域概觀

載入 WebView2 控制件時,您的應用程式可以存取下列功能和 API:

功能範圍 用途
主要類別:環境、控制器和核心 CoreWebView2EnvironmentCoreWebView2ControllerCoreWebView2 類別 (或對等介面) 一起運作,讓您的應用程式可以裝載 WebView2 瀏覽器控制項並存取其瀏覽器功能。 這些大型類別會公開您的主應用程式可以存取的各種 API,為您的使用者提供下列瀏覽器相關功能類別。
Web/原生 Interop 將 Web 內容內嵌至原生應用程式。 使用簡單的訊息、JavaScript 程式代碼和原生物件,在原生程式代碼和 Web 程式代碼之間進行通訊。
瀏覽器功能 WebView2 控制件可讓您的應用程式存取許多瀏覽器功能。 您可以修改這些瀏覽器功能,並將其開啟或關閉。
進程管理 取得執行 WebView2 進程、結束進程和失敗進程的相關信息,讓您的應用程式可以據以採取動作。
瀏覽至頁面並管理載入的內容 管理瀏覽至網頁,以及管理網頁中載入的內容。
iframes 將其他網頁內嵌到您自己的網頁。 偵測內嵌網頁的建立時間、偵測內嵌網頁巡覽的時間,以及選擇性地略過 x 框架選項。
驗證 您的應用程式可以使用 WebView2 控制項來處理基本身份驗證。 基本身份驗證 是屬於 HTTP 通訊協定的特定驗證方法。
在非架構應用程式中轉譯 WebView2 如果您的主應用程式未使用 UI 架構,請使用這些 API 來設定 WebView2 轉譯系統。 此轉譯設定可控制 WebView2 如何將輸出轉譯到您的主應用程式,以及 WebView2 如何處理輸入、焦點和輔助功能。
使用組合轉譯 WebView2 針對以組合為基礎的 WebView2 轉譯,請使用 CoreWebView2Environment 來建立 CoreWebView2CompositionControllerCoreWebView2CompositionController 提供與 相同的 API CoreWebView2Controller,但也包含組合型轉譯的 API。
環境選項 用戶數據:管理 UDF) (用戶資料資料資料夾,這是用戶電腦上的資料夾。 UDF 包含與主應用程式和 WebView2 相關的數據。 WebView2 應用程式會使用使用者資料資料夾來儲存瀏覽器數據,例如 Cookie、許可權和快取的資源。 在單一 UDF 下管理多個配置檔。
運行時間選取 專案支持發行前測試和自我裝載。 您可以指定瀏覽器預覽通道的搜尋順序,並指定要搜尋的瀏覽器預覽通道。
效能和偵錯 分析和偵錯效能、處理與效能相關的事件,以及管理記憶體使用量,以提高應用程式的回應性。
Chrome DevTools 通訊協定 (CDP) 檢測、檢查、偵錯和配置檔 Chromium 型瀏覽器。 Chrome DevTools 通訊協定 (CDP) 是 Microsoft Edge DevTools 的基礎。 針對 WebView2 平臺中未實作的功能,請使用 Chrome DevTools 通訊協定。

此頁面只會列出發行 SDK 中的 API;它不會列出發行 SDK 中尚未提供的實驗性 API 或穩定 API。 如需包含實驗性 API 的完整 API 清單,請參閱 WebView2 SDK 的版本資訊

主要類別:環境、控制器和核心

CoreWebView2EnvironmentCoreWebView2ControllerCoreWebView2 類別 (或對等介面) 一起運作,讓您的應用程式可以裝載 WebView2 瀏覽器控制項並存取其瀏覽器功能。 這三個大型類別會公開各種 API,讓您的主應用程式可以存取這些 API,為您的使用者提供許多類別的瀏覽器相關功能。

  • 類別 CoreWebView2Environment 代表一組 WebView2 控制件,這些控件共用相同的 WebView2 瀏覽器進程、用戶資料資料夾和轉譯器進程。 從這個CoreWebView2Environment類別中,您會建立和 CoreWebView2 實例的CoreWebView2Controller配對。
  • 類別 CoreWebView2Controller 負責裝載相關功能,例如視窗焦點、可見度、大小和輸入,您的應用程式會在其中裝載 WebView2 控制件。
  • 類別 CoreWebView2 適用於 WebView2 控制件的 Web 特定部分,包括網路、導覽、腳本,以及剖析和轉譯 HTML。

另請參閱:

Web/原生 Interop

Microsoft Edge WebView2 控制件可讓您將 Web 內容內嵌至原生應用程式。 您可以使用簡單的訊息、JavaScript 程式代碼和原生物件,在原生程式代碼和 Web 程式代碼之間進行通訊。 以下是在 Web 和原生程式代碼之間進行通訊的主要 API。

下列小節:

Web/原生 Interop 的常見使用案例:

  • 流覽至不同的網站之後,更新原生主機視窗標題。
  • 從 Web 應用程式傳送原生相機物件並使用其方法。
  • 在應用程式的 Web 端執行專用的 JavaScript 檔案。

另請參閱:

主機/Web 對象共用

WebView2 可讓原生程式代碼中定義的對象傳遞至應用程式的 Web 端程式代碼。 主機物件 是您選擇傳遞至應用程式 Web 端程式代碼之原生程式代碼中定義的任何物件。

主機物件可以投影到 JavaScript,讓您可以從應用程式的 Web 端程式代碼呼叫原生物件方法 (或其他 API) 。 例如,您的應用程式可以呼叫這類 API,因為使用者在應用程式的 Web 端互動。 如此一來,您就不需要在 Web 端程式代碼中重新實作原生物件的 API,例如方法或屬性。

腳本執行

允許主應用程式在 WebView2 控制件內的 Web 內容中新增 JavaScript 程式代碼。

Web 傳訊

您的應用程式可以將訊息傳送至 WebView2 控制件內的 Web 內容,並接收來自該 Web 內容的訊息。 訊息會以字串或 JSON 物件的形式傳送。

腳本對話框

裝載 WebView2 時,您的應用程式可以管理不同的 JavaScript 對話框、隱藏這些對話框,或使用自定義對話來取代它們。

共用緩衝區

SharedBuffer API 支援 WebView2 主機應用程式進程與 WebView2 轉譯器進程之間的共用緩衝區,以操作系統中的共用記憶體為基礎。

瀏覽器功能

WebView2 控制件可讓您的應用程式存取許多瀏覽器功能。 您可以修改這些瀏覽器功能,並將其開啟或關閉。

下列小節:

列印

您可以設定自定義列印設定,將網頁列印到印表機、PDF 檔案或 PDF 資料流。

另請參閱:

Cookie

您可以在 WebView2 中使用 Cookie 來管理使用者會話、儲存使用者個人化喜好設定,以及追蹤用戶行為。

另請參閱:

映像

藉由裝載 WebView2,您的應用程式可以擷取螢幕快照,並指出要用來儲存影像的格式。

下載

您的應用程式可以在 WebView2 中管理下載體驗。 您的應用程式可以:

  • 允許或封鎖以不同元數據為基礎的下載。
  • 變更下載位置。
  • 設定自訂下載UI。
  • 自訂預設UI。

一般:

變更預設體驗:

自訂下載體驗:

權限

不同的網頁可能會要求您存取某些特殊許可權資源的許可權,例如地理位置感測器、相機和麥克風。 您的主應用程式可以程式設計方式回應許可權要求,並可使用自己的UI取代預設許可權UI。

快顯功能表

WebView2 控制件提供預設操作功能表 (按下滑鼠右鍵選單) 您可以自定義或停用,您也可以建立自己的操作功能表。

另請參閱:

狀態列

狀態列位於頁面的左下方,並顯示所顯示網頁的狀態。 在 WebView2 中,您可以啟用/停用狀態列、取得狀態列中的文字,以及了解狀態列文字變更的時機。

使用者代理程式

使用者代理程式是代表使用者之程式身分識別的字串,例如瀏覽器名稱。 在 WebView2 中,您可以設定使用者代理程式。

另請參閱:

自動填寫

您的應用程式可以獨立控制瀏覽器的自動填滿功能是否已針對一般資訊或密碼啟用。

音訊

您的應用程式可以將所有音訊設為靜音和取消靜音,並找出音訊播放的時機。

區域中滑鼠點選的點擊測試

在 WebView2 包含的區域上提供點擊測試結果。 適用於想要在 WebView2 視窗的非用戶端區域上處理滑鼠事件的可視化裝載應用程式。

撥動手勢流覽

藉由裝載 WebView2 控制件,您的應用程式可以在已啟用觸控輸入的裝置上啟用或停用撥動手勢流覽。 此手勢可讓使用者:

  • 向左/向右撥動 (水平撥動) 瀏覽至瀏覽歷程記錄中的上一頁或下一頁。
  • 拖動以重新整理 (在目前頁面) 垂直撥動。

此功能目前預設為在瀏覽器中停用。 若要在 WebView2 中啟用此功能,請設定 AdditionalBrowserArguments 屬性,並指定 --pull-to-refresh 參數。

啟用或停用瀏覽器,以回應快捷鍵 (快捷鍵)

ICoreWebView2AcceleratorKeyPressedEventArgs 具有 屬性 IsBrowserAcceleratorKeyEnabled ,可讓您控制瀏覽器是否處理快速鍵 (快捷鍵) ,例如 Ctrl+PF3

另請參閱:

全屏

在 WebView2 中,您可以找出 HTML 元素何時進入或離開全螢幕檢視。

PDF 工具列

在瀏覽器 PDF 查看器中,頂端有一個 PDF 特定工具列。 在 WebView2 中,您可以隱藏 PDF 查看器工具列中的某些專案。

佈景主題

在 WebView2 中,您可以將色彩主題自定義為系統、淺色或深色。

語言

屬性 Language 會設定 WebView2 的預設顯示語言,套用至瀏覽器 UI (例如操作功能表和對話) ,以及設定 accept-language WebView2 傳送至網站的 HTTP 標頭。

屬性 ScriptLocale 可讓主應用程式設定所有 Intl JavaScript API 及其他相依 JavaScript API 的預設地區設定,例如 Intl.DateTimeFormat(),這會影響時間/日期格式的字串格式設定。

新增視窗

WebView2 提供處理 JavaScript 函 window.open()式 的功能。

關閉視窗

WebView2 提供處理 JavaScript 函 window.close()式 的功能。

檔標題

您的應用程式可以偵測目前最上層檔的標題何時變更。

Favicon

在 WebView2 中,您可以設定網站的 Favicon ,或在網站變更時收到通知。

安全性與隱私權

追蹤防護

追蹤防護可讓主應用程式控制與使用者配置檔相關聯之 WebView2 控制件的追蹤防護層級。

SmartScreen

Microsoft Defender 預設會啟用SmartScreen (“SmartScreen”) 。 屬性 IsReputationCheckingRequired 會控制是否啟用SmartScreen。

如果您未停用 SmartScreen,您必須通知所有使用者您的軟體包含 Microsoft Defender SmartScreen,並收集使用者的資訊並傳送至 Microsoft,如 Microsoft 隱私聲明Microsoft Edge 隱私權白皮書中所揭露。

另請參閱:

  • WebView2 中數據和隱私權中的SmartScreen
自訂損毀報告

如果有任何 WebView2 進程損毀,則會建立一或多個小型傾印檔案並傳送給 Microsoft 進行診斷。 使用此 API 自定義執行診斷和進行分析時的當機報告。

  • 若要防止將損毀傾印傳送給 Microsoft,請將 屬性設定 IsCustomCrashReportingEnabledfalse
  • 若要找出損毀傾印並使用它們進行自定義,請使用 CrashDumpFolderPath 屬性。

另請參閱:

瀏覽器擴充功能

您的應用程式可以內嵌 WebView2 控制件,該控件會使用瀏覽器延伸模組 (附加元件) 。 Microsoft Edge 充功能是開發人員用來新增或修改 Microsoft Edge 功能的小型應用程式,可改善使用者的瀏覽體驗。

另請參閱:

進程管理

取得執行 WebView2 進程、結束進程和失敗進程的相關信息,讓您的應用程式可以據以採取動作。

下列小節:

框架處理程序資訊

包括 GetProcessExtendedInfos在內的框架處理程式資訊 API 提供所有在相關聯轉譯器進程中執行之框架的快照集集合。 此 API 可讓您的應用程式偵測 WebView2 的哪個部分正在取用資源,例如記憶體或 CPU 使用量。

透過 WebView2 控制件,您的應用程式可以管理流覽至網頁,以及管理網頁中載入的內容。

下列小節:

管理載入 WebView2 的內容

這些 API 會載入、停止載入,並將內容重載至 WebView2。 載入的內容可以是:

  • 來自 URL 的內容。
  • HTML 的字串。
  • 透過虛擬主機名對本機資料夾對應的本機內容。
  • 來自已建構網路要求的內容。

另請參閱:

歷程記錄方法允許在 WebView2 中來回巡覽,而歷程記錄事件則提供有關歷程記錄和 WebView2 目前來源中變更的資訊。

NavigationKind 取得每個導覽的導覽種類,例如[上一頁]/[轉寄]、[重載] 或 [流覽至新檔]。

封鎖不想要的導覽

事件 NavigationStarting 可讓應用程式取消流覽至 WebView2 中指定的 URL,包括畫面格。

使用 NavigationStarting 和其他導覽事件時,可以通知應用程式 WebView2 中的瀏覽狀態。 導 是載入新 URL 的程式。

另請參閱:

在 WebView2 中管理網路要求

WebResourceRequested 事件可讓應用程式攔截並覆寫 WebView2 中的所有網路要求。 事件 WebResourceResponseReceived 可讓應用程式監視傳送至 的要求,以及從網路接收的回應。

另請參閱:

自訂配置註冊

允許 CustomSchemeRegistration 在 WebView2 中註冊自定義配置,讓應用程式可以處理 WebResourceRequested 這些自定義配置 URL 要求的事件,並巡覽 WebView2 至這類 URL。

客戶端憑證

在 WebView2 中,您可以使用用戶端憑證 API 來選取應用程式層級的客戶端憑證。 此 API 可讓您:

  • 視需要向用戶顯示UI。
  • 取代預設客戶端憑證對話框提示。
  • 以程式設計方式查詢憑證。
  • 當 WebView2 向需要用戶端憑證以進行 HTTP 驗證的 HTTP 伺服器提出要求時,請從清單中選取憑證以回應伺服器。

伺服器證書

在 WebView2 中,您可以使用伺服器證書 API 在應用層級信任伺服器的 TLS 憑證。 如此一來,您的主應用程式就可以轉譯頁面,而不會提示使用者 TLS 錯誤,或者您的主應用程式可以自動取消要求。

啟動外部 URI 配置

啟動向OS註冊的URI配置。

iframes

iframe 可讓您將其他網頁內嵌到您自己的網頁。 在 WebView2 中,您可以:

  • 瞭解建立 iframe 的時間。
  • 瞭解 iframe 巡覽的時間。
  • 允許略過 x 框架選項。

另請參閱:

驗證

您的應用程式可以使用 WebView2 控制項來處理基本身份驗證。 基本身份驗證 是屬於 HTTP 通訊協定的特定驗證方法。

另請參閱:

在非架構應用程式中轉譯 WebView2

如果您的主應用程式未使用 UI 架構,請使用這些 API 來設定 WebView2 轉譯系統。 此轉譯設定可控制 WebView2 如何將輸出轉譯到您的主應用程式,以及 WebView2 如何處理輸入、焦點和輔助功能。

使用這些 API 的時機

  • UI 架構 - 如果您針對應用程式使用 UI 架構,則應該使用該 UI 架構所提供的 WebView2 元素,而不是使用這些 API。

  • 沒有UI架構,也不使用組合 - 例如,如果您不是使用應用程式的UI架構 (,如果您直接使用純 Win32) ,或如果您的 UI 架構沒有 WebView2 元素,則您需要使用本節中的這些 API 來建立 CoreWebView2Controller 並轉譯到您的應用程式。

  • 沒有 UI 架構,且使用 Composition - 如果您的應用程式 UI 是使用 DirectCompositionWindows.UI.Composition 建置的,您應該使用 CoreWebView2CompositionController 而不是使用這些 API;請參閱下面 的使用組合轉譯 WebView2

下列小節:

重設大小、定位和可見度

CoreWebView2Controller 接受父代 HWND。 屬性 Bounds 會調整 WebView2 的大小,並放置相對於父系 HWND的 WebView2。 WebView2 的可見性可以使用 IsVisible切換。

縮放

WebView2 ZoomFactor 可用來調整視窗的 Web 內容。 當使用者在旋轉滑鼠滾輪時按 Ctrl 來縮放內容時,也會更新 UI 縮放。

點陣化規模

RasterizationScale API 會調整所有 WebView2 UI,包括操作功能表、工具提示和快顯。 應用程式可以設定 WebView2 是否應該偵測監視規模變更,並自動更新 RasterizationScale。 BoundsMode 用來設定 Bounds 屬性是否解譯為原始圖元,或是需要由 RasterizationScale) 調整的 DIP (。

焦點和索引標籤

WebView2 控制件會引發事件,讓應用程式知道控制項取得焦點或失去焦點。 對於按 Tab 鍵 (按 Tab 鍵) ,有一個 API 可將焦點移至 WebView2,以及 WebView2 的事件要求應用程式重新取得焦點。

父視窗

WebView2 可以重新命名為不同的父視窗句柄 (HWND) 。 當應用程式在螢幕上的位置變更時,WebView2 也需要收到通知。

鍵盤快捷方式

當 WebView2 有焦點時,它會直接接收來自使用者的輸入。 應用程式可能會想要攔截並處理某些快捷鍵組合 (快捷鍵) ,或停用一般瀏覽器快捷鍵行為。

另請參閱 上方的啟用或停用瀏覽器,以回應快捷鍵 (快捷鍵)

默認背景色彩

WebView2 可以指定預設背景色彩。 色彩可以是任何不透明的色彩,或是透明的。 如果 HTML 頁面未設定自己的背景色彩,則會使用此色彩。

使用組合轉譯 WebView2

針對以組合為基礎的 WebView2 轉譯,請使用 CoreWebView2Environment 來建立 CoreWebView2CompositionControllerCoreWebView2CompositionController 提供與 相同的 API CoreWebView2Controller,但也包含組合型轉譯的 API。

下列小節:

連接到視覺化樹狀結構

WebView2 可以將其組合樹狀結構連接到 IDCompositionVisualIDCompositionTargetWindows::UI::Composition::ContainerVisual

轉送輸入

應用程式會接收 (滑鼠、觸控、畫筆) 的空間輸入,而且必須傳送至 WebView2。 WebView2 會在應該根據滑鼠位置更新游標時通知應用程式。

拖放

默認支援從 WebView2 控制件拖曳到另一個應用程式。 不過,拖曳 WebView2 控制程式需要主應用程式從系統接收 IDropTarget 事件時,主應用程式必須將事件轉送至 WebView2 控制件。 拖曳至 WebView2 控件包含完全在 WebView2 控制件內的拖放作業。

使用下列 API 將事件從系統轉送到 IDropTarget WebView2 控制件。

協助工具

根據預設,WebView2 會在輔助功能樹狀結構中顯示為 Win32/C++ 應用程式的父 HWND 子系。 WebView2 提供 API,讓 WebView2 內容相對於應用程式中的其他元素更妥善定位。

不適用。

環境選項

下列小節:

使用者資料

管理使用者資料資料夾 (UDF) ,這是用戶電腦上的資料夾。 UDF 包含與主應用程式和 WebView2 相關的數據。 WebView2 應用程式會使用使用者資料資料夾來儲存瀏覽器數據,例如 Cookie、許可權和快取的資源。

下列小節:

另請參閱:

清除瀏覽資料:

多個配置檔

在單一用戶數據資料夾下管理多個配置檔。

另請參閱:

Create 定義設定檔的 options 物件:

Create 使用設定檔的 WebView2 控制件:

存取與操作設定檔:

刪除設定檔

您的應用程式可以刪除 WebView2 網頁瀏覽器控制件的使用者配置檔。

另請參閱:

運行時間選取專案

運行時間選取專案支持發行前測試和自我裝載。 建立 WebView2 環境時:

  • 若要指定瀏覽器預覽通道的搜尋順序,請使用 CoreWebView2EnvironmentOptions.ChannelSearchKind 屬性。
  • 若要指定要搜尋的瀏覽器預覽通道,請使用 CoreWebView2EnvironmentOptions.ReleaseChannels 屬性。

另請參閱:

效能和偵錯

分析和偵錯效能、處理與效能相關的事件,以及管理記憶體使用量,以提高應用程式的回應性。

下列小節:

記憶體使用量目標

指定記憶體耗用量層級,例如 lownormal

Chrome DevTools 通訊協定 (CDP)

Chrome DevTools 通訊協定 (CDP) 提供 API 來檢測、檢查、偵錯和設定檔 Chromium 型瀏覽器。 Chrome DevTools 通訊協定是 Microsoft Edge DevTools 的基礎。 針對 WebView2 平臺中未實作的功能,請使用 Chrome DevTools 通訊協定。

另請參閱:

開啟:

叫:

接收機:

另請參閱