共用方式為


WebView2 API 概述

將 WebView2 控制項嵌入應用程式,即可存取 WebView2 類別或介面所提供的各種方法與屬性。

WebView2 擁有數百個 API,提供廣泛的功能,從提升應用程式原生平台的功能,到讓應用程式能修改瀏覽器體驗。 本文將 WebView2 API 的高層次分類,幫助你了解使用 WebView2 可以做的各種事情。

詳細內容:

頂層特徵區域概述

當 WebView2 控制項託管時,您的應用程式可使用以下功能與 API:

功能範圍 用途
主要類別:環境、控制器與核心 CoreWebView2Environment、、 CoreWebView2Controller以及CoreWebView2類別 (或等效介面,) 協同運作,使你的應用程式能承載 WebView2 瀏覽器控制並存取其瀏覽器功能。 這些大型類別會暴露出各種 API,讓你的主機應用程式能存取,為使用者提供以下幾類瀏覽器相關功能。
網頁/原生互通 將網頁內容嵌入原生應用程式中。 利用簡單訊息、JavaScript 程式碼和原生物件,在原生程式碼與網頁程式碼間進行通訊。
瀏覽器功能 WebView2 控制項讓你的應用程式能存取許多瀏覽器功能。 你可以修改這些瀏覽器功能,並開啟或關閉它們。
流程管理 取得有關執行 WebView2 程序、退出程序及失敗程序的資訊,讓您的應用程式能相應採取行動。
瀏覽頁面並管理已載入的內容 管理網頁導覽及網頁載入的內容。
iframes 將其他網頁嵌入你自己的網頁中。 偵測嵌入網頁何時建立、偵測嵌入網頁是否在導航,並可選擇性地繞過 x-frame 選項。
驗證 你的應用程式可以用 WebView2 控制來處理基本的認證。 基本認證 是一種特定的認證方法,屬於 HTTP 協議的一部分。
在非框架應用程式中渲染 WebView2 如果你的主機應用程式沒有使用 UI 框架,請使用這些 API 來設定 WebView2 的渲染系統。 這個渲染設定控制 WebView2 如何將輸出渲染到你的主機應用程式,以及 WebView2 如何處理輸入、焦點和無障礙。
使用合成來渲染 WebView2 對於基於合成的 WebView2 渲染,請使用 CoreWebView2Environment 來建立一個 CoreWebView2CompositionControllerCoreWebView2CompositionController 提供與 CoreWebView2Controller相同的 API,但也包含基於組合的渲染 API。
環境選項 使用者資料:管理使用者資料資料夾 (UDF) ,該資料夾位於使用者機器上。 UDF 包含與主機應用程式及 WebView2 相關的資料。 WebView2 應用程式使用使用者資料資料夾來儲存瀏覽器資料,例如 Cookie、權限和快取資源。 在單一 UDF 下管理多個設定檔。
執行時選擇 支援預發布測試與自我架設。 你可以指定瀏覽器預覽頻道的搜尋順序,並指定搜尋哪些瀏覽器預覽頻道。
效能與除錯 分析與除錯效能、處理效能相關事件,並管理記憶體使用,以提升應用程式的反應速度。
Chrome DevTools 協定 (CDP) 對基於 Chromium 的瀏覽器進行檢查、檢查、除錯及設定檔。 Chrome DevTools 協定 (CDP) 是 Microsoft Edge DevTools 的基礎。 對於 WebView2 平台未實作的功能,請使用 Chrome DevTools 協定。

本頁僅列出 Release SDK 中的 API;它沒有列出實驗性 API,也沒有在 Release SDK 中尚未提供過的穩定 API。 如需完整的 API 清單,包括實驗性 API,請參閱 WebView2 SDK 的發行說明

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

CoreWebView2Environment、、 CoreWebView2Controller以及CoreWebView2類別 (或等效介面,) 協同運作,使你的應用程式能承載 WebView2 瀏覽器控制並存取其瀏覽器功能。 這三個大型類別會暴露出各種 API,讓你的主機應用程式能夠存取,為使用者提供多種與瀏覽器相關的功能。

  • CoreWebView2Environment 類別代表一組共用相同 WebView2 瀏覽器程序、使用者資料資料夾及渲染器程序的 WebView2 控制項。 從這個CoreWebView2Environment類別中,你會建立 和 CoreWebView2 的實例對CoreWebView2Controller

  • 這個 CoreWebView2Controller 類別負責與主機相關的功能,例如視窗焦點、可見性、大小和輸入,而你的應用程式則承載 WebView2 控制項。

  • CoreWebView2 類別針對 WebView2 控制項中特定的網頁部分,包括網路、導航、腳本,以及解析與渲染 HTML。

另請參閱:

網頁/原生互通

Microsoft Edge WebView2 控制功能讓你能將網頁內容嵌入原生應用程式中。 你可以用簡單的訊息、JavaScript 程式碼和原生物件,在原生程式碼和網頁程式碼之間溝通。 以下是用於網頁與原生程式碼間通訊的主要 API。

網頁/原生互通的常見使用案例:

  • 在瀏覽到其他網站後,更新原生主機視窗標題。
  • 傳送一個原生相機物件,並從網頁應用程式中使用其方法。
  • 在應用程式的網頁端執行一個專用的 JavaScript 檔案。

另請參閱:

主機/網頁物件共享

WebView2 允許以原生程式碼定義的物件傳遞到應用程式的網頁端程式碼。 主機物件 是指任何以原生程式碼定義,並由你選擇傳入應用程式網頁端程式碼的物件。

主機物件可以投影成 JavaScript,讓你能從應用程式的網頁端程式碼) 呼叫原生物件方法 (或其他 API。 例如,你的應用程式可以因為使用者在網頁端的互動而呼叫這些 API。 這樣一來,你就不需要在網頁端程式碼中重新實作原生物件的 API,例如方法或屬性。

腳本執行

允許主機應用程式在 WebView2 控制項內的網頁內容中新增 JavaScript 程式碼。

網路訊息

你的應用程式可以向 WebView2 控制範圍內的網頁內容發送訊息,並接收來自該網頁內容的訊息。 訊息以字串或 JSON 物件形式傳送。

你可以選擇性地透過 (.NET、PostWebMessageAsJsonWinRT) (或 PostWebMessageAsJsonWithAdditionalObjects Win32) 發送並接收 DOM 物件additionalObjects。 WebView2 CoreWebView2FileSystemHandle 類別代表 DOM FileSystemHandleCoreWebView2FileFile代表 。 另 chrome.webview.postMessageWithAdditionalObjects 見 JavaScript 參考文獻。

腳本對話

當 WebView2 運行時,你的應用程式可以管理不同的 JavaScript 對話框,以抑制它們或以自訂對話框取代。

共享緩衝區

SharedBuffer API 支援基於作業系統共享記憶體,在 WebView2 主機應用程式程序與 WebView2 渲染程序之間共享緩衝區。

另請參閱:

瀏覽器功能

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

列印

你可以透過設定自訂列印設定,將網頁列印到印表機、PDF 檔案或 PDF 串流。

另請參閱:

Cookie

你可以在 WebView2 中使用 Cookie 來管理使用者會話、儲存使用者個人化偏好,並追蹤使用者行為。

另請參閱:

影像擷取

透過主機 WebView2,您的應用程式可以擷取截圖並指示使用何種格式來儲存圖片。

控制螢幕截圖介面是否顯示

ScreenCaptureStarting當對應CoreWebView2Frame該 (或其後繼 iframe) 在顯示 UI 前請求使用螢幕擷取 API 的權限時,該事件就會被觸發。 應用程式可以阻擋 UI 顯示,或允許顯示該 UI。

Find

Find API 允許你以程式方式控制 Find 操作,並能為您的應用程式新增以下功能:

  • 自訂搜尋選項,包括尋找詞彙大小寫敏感度Word 匹配匹配高亮預設 UI 抑制
  • 找到文字字串,並在 WebView2 控制項中切換。
  • 程式化啟動 搜尋 操作,並瀏覽 搜尋 結果。
  • 抑制預設 的搜尋 介面。
  • 追蹤 尋找 行動的狀態。

PDF 文件的 Find API 已知存在問題。 當你在 WebView2 控制項中查看 PDF 文件時, 搜尋 功能目前只會顯示第一個索引和找到的匹配數量。 例如,如果該字串在 PDF 中出現三次,介面會顯示 1/3 ,且無法程式化呼叫 NextPrevious

我們正在積極調查這些問題,並鼓勵您透過 WebView2Feedback 倉庫回報遇到的任何問題。

下載

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

  • 根據不同的元資料允許或阻擋下載。
  • 更改下載位置。
  • 設定自訂下載介面。
  • 自訂預設介面。

一般:

修改預設體驗:

自訂下載體驗:

另存為

另存為 API 允許你以程式方式執行 另存為 操作。 你可以用這些 API 封鎖預設的 另存 為對話框,然後靜默儲存,或自己建立另 存為 UI。 這些 API 僅適用於 另存為 對話框,不適用於使用下載 API 的 下載 對話框。

儲存檔案時設定安全警告

透過監聽事件 SaveFileSecurityCheckStarting ,應用程式可以在此事件註冊處理器,取得檔案路徑、檔名副檔名及文件來源 URI 資訊。 接著你可以套用自己的規則來執行以下動作:

  • 允許儲存檔案時不會顯示預設的安全警告介面。
  • 取消存錢。
  • 建立自己的 UI 來管理執行時的檔案類型政策。

網頁通知處理

網頁通知 API 支援非持久性通知。 NotificationReceivedCoreWebView2事件控制網頁通知處理,允許主機應用程式進行自訂或抑制。 未處理的通知預設使用 WebView2 的介面。

權限

不同網頁可能會要求你取得某些特權資源的權限,例如地理定位感測器、攝影機和麥克風。 你的主機應用程式可以程式化回應權限請求,並能用自己的介面取代預設權限介面。

快顯功能表

WebView2 控制項提供預設的右鍵選單 (右鍵選單) ,你可以自訂或停用,也可以建立自己的右鍵選單。

另請參閱:

狀態列

頁面左下角有一個狀態列,顯示所顯示網頁的狀態。 在 WebView2 中,你可以啟用或停用狀態列,取得狀態列中的文字,並知道狀態列文字何時改變。

流暢疊加捲軸條

以 Microsoft Fluent 設計風格化捲軸,並讓捲軸重疊在網頁內容上。 這種自適應滾動條設計會根據不同裝置和視窗大小調整。

要嘗試 Fluent 疊加捲軸,請在 Microsoft Edge 中進入 edge://flags 並進入 Fluent 疊加捲軸

另請參閱:

使用者代理程式

使用者代理是一個字串,代表使用者代表程式的身份,例如瀏覽器名稱。 在 WebView2 中,你可以設定使用者代理。

另請參閱:

自動填充

你的應用程式可以獨立控制瀏覽器的自動填充功能是啟用一般資訊還是密碼。

音訊

你的應用程式可以靜音和解除靜音所有音訊,並判斷音訊何時播放。

地區滑鼠點擊的測試

提供 WebView2 所包含區域的碰撞測試結果。 對於想處理 WebView2 視窗非客戶端區域滑鼠事件的視覺化託管應用程式非常有用。

滑動手勢導航

透過託管 WebView2 控制項,您的應用程式可以在觸控輸入裝置上啟用或關閉滑動手勢導覽。 此手勢允許終端使用者:

  • 向左/向右滑動 () 橫滑即可切換到導航歷史中的上一頁或下一頁。
  • 拉拉以刷新 (垂直滑) 目前頁面。

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

啟用或停用對加速鍵 (快捷鍵的回應瀏覽器)

ICoreWebView2AcceleratorKeyPressedEventArgs 有一個 IsBrowserAcceleratorKeyEnabled 屬性讓你可以控制瀏覽器是處理加速鍵還是捷徑鍵 () ,例如 Ctrl+PF3

另請參閱:

全螢幕

在 WebView2 中,你可以知道 HTML 元素何時進入或離開全螢幕視圖。

PDF 工具列

在瀏覽器的 PDF 檢視器中,頂部有一個專屬 PDF 的工具列。 在 WebView2 中,你可以在 PDF 檢視器工具列中隱藏部分項目。

佈景主題

在 WebView2 中,你可以自訂色彩主題為系統、淺色或深色。

語言

此屬性設定 Language 了 WebView2 預設顯示語言,適用於瀏覽器介面 (,例如上下文選單和對話框) ,並設定 accept-language WebView2 傳送給網站的 HTTP 標頭。

ScriptLocale 屬性允許主機應用程式設定所有 Intl JavaScript API 及其他依賴它的 JavaScript API 的預設位置,例如 Intl.DateTimeFormat(),這會影響時間/日期格式的字串格式。

新視窗

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

關閉視窗

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

文件標題

你的應用程式能偵測目前頂層文件標題何時更改。

Favicon

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

安全性與隱私權

追蹤預防

追蹤防護讓主機應用程式能控制與使用者設定檔相關的 WebView2 控制項的追蹤防護等級。

智慧螢幕

Microsoft Defender SmartScreen (「SmartScreen」) 預設是啟用的。 屬性控制 IsReputationCheckingRequired 是否啟用 SmartScreen。

若您未停用 SmartScreen,您必須通知所有使用者您的軟體包含 Microsoft Defender SmartScreen,並依據 Microsoft 隱私聲明SmartScreenMicrosoft Edge 的用戶資料與隱私條款,收集並傳送使用者資訊給 Microsoft。

另請參閱:

  • SmartScreen資料中,在 WebView2 中取得隱私
自訂崩潰報告

如果任何 WebView2 程序當機,會建立一個或多個 minidump 檔案並送交 Microsoft 進行診斷。 使用此 API 在執行診斷和分析時自訂當機報告。

  • 為了防止崩潰傾印資料傳送給 Microsoft,請將屬性 IsCustomCrashReportingEnabled 設為 false
  • 要找到崩潰傾倒並進行自訂,請使用該 CrashDumpFolderPath 屬性。

另請參閱:

瀏覽器擴充功能

你的應用程式可以嵌入使用 Microsoft Edge 擴充功能的 WebView2 控制項。 Microsoft Edge 擴充功能是一款小型應用程式,開發者用來新增或修改 Microsoft Edge 的功能,以提升使用者的瀏覽體驗。

另請參閱:

流程管理

取得有關執行 WebView2 程序、退出程序及失敗程序的資訊,讓您的應用程式能相應採取行動。

框架工藝資訊

Frame Process Info API(包括 GetProcessExtendedInfos)提供所有在相關渲染程序中正在執行的框架快照集合。 此 API 讓您的應用程式能偵測 WebView2 中哪個部分正在消耗記憶體或 CPU 使用率。

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

管理載入於 WebView2 的內容

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

  • 來自網址的內容。
  • 一串 HTML 文件。
  • 透過虛擬主機名稱將本地內容映射到本地資料夾。
  • 來自建構網路請求的內容。

另請參閱:

歷史方法允許在 WebView2 中前後返回,歷史事件則提供關於歷史變更及 WebView2 當前來源的資訊。

NavigationKind 會取得每個導覽的導覽類型,例如返回/前進、重新載入或導向新文件。

封鎖不受歡迎的導航

NavigationStarting 事件允許應用程式取消在 WebView2 中指定網址的導航,包括框架。

透過 NavigationStarting 其他導航事件,應用程式可以得知 WebView2 中的導航狀態。 導航是載入新網址的過程。

另請參閱:

在 WebView2 管理網路請求

WebResourceRequested 事件允許應用程式攔截並覆蓋 WebView2 中的所有網路請求。 這個 WebResourceResponseReceived 事件讓應用程式能監控傳送到的請求以及從網路收到的回應。

另請參閱:

自訂方案註冊

CustomSchemeRegistration 允許在 WebView2 中註冊自訂方案,讓應用程式能處理 WebResourceRequested 對這些自訂方案 URL 的請求事件,並透過 WebView2 導航到這些網址。

用戶端憑證

在 WebView2 中,你可以使用 Client Certificate API 在應用程式層級選擇客戶端憑證。 此 API 允許您:

  • 如果需要,可以顯示使用者介面。
  • 替換預設的客戶憑證對話框提示。
  • 用程式化方式查詢證書。
  • 當 WebView2 向需要客戶端憑證的 HTTP 伺服器發出請求時,從清單中選擇一個憑證來回應伺服器。

伺服器憑證

在 WebView2 中,你可以使用伺服器憑證 API,在應用程式層級信任伺服器的 TLS 憑證。 這樣一來,你的主機應用程式就能在不提醒使用者 TLS 錯誤的情況下渲染頁面,或者主機應用程式能自動取消請求。

啟動外部 URI 方案

啟動一個已註冊於作業系統的 URI 方案。

iframes

iFrames 允許你將其他網頁嵌入到你自己的網頁中。 在 WebView2 中,你可以:

  • 查明 iframe 何時被建立。
  • 查查 iframe 何時導航。
  • 允許繞過 x-frame 選項。

另請參閱:

驗證

你的應用程式可以用 WebView2 控制來處理基本的認證。 基本認證 是一種特定的認證方法,屬於 HTTP 協議的一部分。

另請參閱:

在非框架應用程式中渲染 WebView2

如果你的主機應用程式沒有使用 UI 框架,請使用這些 API 來設定 WebView2 的渲染系統。 這個渲染設定控制 WebView2 如何將輸出渲染到你的主機應用程式,以及 WebView2 如何處理輸入、焦點和無障礙。

何時使用這些 API

  • UI 框架 - 如果你的應用程式使用 UI 框架,應該使用該 UI 框架提供的 WebView2 元素,而不是使用這些 API。

  • 沒有 UI 框架,也沒有使用 Composition ——例如,如果你沒有為應用程式 (使用介面框架,或是直接) 使用純 Win32,或是你的 UI 框架沒有 WebView2 元素,那麼你需要用本節的 API 來建立 CoreWebView2Controller 並渲染它到你的應用程式中。

  • 沒有 UI 框架,且使用 Composition - 如果你的應用程式 UI 是使用 DirectCompositionWindows.UI.Composition 建置,建議使用 CoreWebView2CompositionController 而非使用這些 API;詳見下方 「使用 Composition 渲染 WebView2」。

尺寸、位置與可見度

CoreWebView2Controller需要父母。HWNDBounds 屬性將 WebView2 相對於父 HWND節點 的大小與位置。 WebView2 的可見性可以透過 切換 IsVisible

縮放

WebView2 ZoomFactor 用於縮放視窗的網頁內容。 使用者在旋轉滑鼠滾輪時按 Ctrl 縮放內容時,UI 縮放也會同步。

光柵化尺度

RasterizationScale API 可縮放所有 WebView2 介面,包括右鍵選單、提示與彈出視窗。 該應用程式可設定 WebView2 是否偵測螢幕比例變化,並自動更新 RasterizationScale。 BoundsMode 用來設定界限屬性是被解讀為原始像素,還是需要按) 縮放 RasterizationScale 的 DIP (。

焦點與制表

WebView2 控制項會觸發事件,讓應用程式知道控制項何時獲得焦點或失去焦點。 按 Tab 鍵 () 時,有 API 可以將焦點移到 WebView2,WebView2 則有事件請求應用程式重新聚焦。

父視窗

WebView2 可以重新父系到不同的父視窗代號 (HWND) 。 WebView2 也需要在應用程式在螢幕上的位置改變時收到通知。

鍵盤加速器

當 WebView2 具備焦點時,會直接接收使用者的輸入。 應用程式可能想要攔截並處理某些加速器按鍵組合 (捷徑鍵) ,或停用瀏覽器加速器的正常行為。

另見上文 啟用或停用回應加速鍵 (快捷鍵的瀏覽器,)

預設背景色

WebView2 可以指定預設背景色。 顏色可以是任何不透明的,也可以是透明的。 如果 HTML 頁面沒有設定自己的背景色,這個顏色就會被使用。

另請參閱:

使用合成來渲染 WebView2

對於基於合成的 WebView2 渲染,請使用 CoreWebView2Environment 來建立一個 CoreWebView2CompositionControllerCoreWebView2CompositionController 提供與 CoreWebView2Controller相同的 API,但也包含基於組合的渲染 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、權限和快取資源。

另請參閱:

清除瀏覽資料:

多重設定檔

在單一使用者資料資料夾下管理多個設定檔。

另請參閱:

建立一個定義設定檔的選項物件:

建立一個 WebView2 控制項,使用以下設定檔:

存取並操作該檔案:

刪除設定檔

您的應用程式可以刪除 WebView2 瀏覽器控制項的使用者設定檔。

另請參閱:

執行時選擇

執行時選擇支援預發布測試與自我架設。 建立 WebView2 環境時:

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

另請參閱:

效能與除錯

分析與除錯效能、處理效能相關事件,並管理記憶體使用,以提升應用程式的反應速度。

記憶體使用目標

指定記憶體使用等級,例如 lownormal

Chrome DevTools 協定 (CDP)

Chrome DevTools 協定 (CDP) 提供 API 來檢查、檢查、除錯及分析基於 Chromium 的瀏覽器。 Chrome DevTools 協定是 Microsoft Edge DevTools 的基礎。 對於 WebView2 平台未實作的功能,請使用 Chrome DevTools 協定。

另請參閱:

開:

叫:

接球員:

另請參閱