WebView2 功能和 API 概述

在应用中嵌入 WebView2 控件可让你的应用访问通过 WebView2 类或接口提供的各种方法和属性。 WebView2 具有数百个 API,提供大量功能,从增强应用的本机平台功能到使应用能够修改浏览器体验。 本文提供 WebView2 API 的高级分组,以帮助你了解可以使用 WebView2 执行的不同操作。

顶级功能区域概述

托管 WebView2 控件时,你的应用有权访问以下功能和 API:

功能区域 用途
主类:Environment、Controller 和 Core CoreWebView2Environment (或等效接口的 、 CoreWebView2ControllerCoreWebView2 类) 协同工作,以便应用可以托管 WebView2 浏览器控件并访问其浏览器功能。 这些大型类公开了各种 API,主机应用可以访问这些 API,以便为用户提供以下类别的浏览器相关功能。
Web/本机互操作 将 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 的基础。 将 Chrome DevTools 协议用于 WebView2 平台中未实现的功能。

此页仅列出发布 SDK 中的 API;它不会列出在发布 SDK 中尚不可用的实验 API 或稳定 API。 有关包括实验 API 在内的 API 的完整列表,请参阅 WebView2 SDK 的发行说明

主类:Environment、Controller 和 Core

CoreWebView2Environment (或等效接口的 、 CoreWebView2ControllerCoreWebView2 类) 协同工作,以便应用可以托管 WebView2 浏览器控件并访问其浏览器功能。 这三个大类公开了各种 API,主机应用可以访问这些 API,从而为用户提供许多与浏览器相关的功能类别。

  • CoreWebView2Environment 表示一组 WebView2 控件,这些控件共享相同的 WebView2 浏览器进程、用户数据文件夹和呈现器进程。 在此类CoreWebView2Environment中,将创建 和 CoreWebView2 实例对CoreWebView2Controller
  • CoreWebView2Controller 负责与托管相关的功能,例如窗口焦点、可见性、大小和输入,应用在其中托管 WebView2 控件。
  • CoreWebView2 适用于 WebView2 控件的特定于 Web 的部分,包括网络、导航、脚本以及分析和呈现 HTML。

另请参阅:

Web/本机互操作

Microsoft Edge WebView2 控件允许将 Web 内容嵌入本机应用程序。 可以使用简单消息、JavaScript 代码和本机对象在本机代码和 Web 代码之间进行通信。 下面是用于在 Web 和本机代码之间进行通信的main API。

以下小节:

Web/本机互操作的常见用例:

  • 导航到其他网站后,更新本机主机窗口标题。
  • 从 Web 应用发送本机相机对象并使用其方法。
  • 在应用程序的 Web 端运行专用 JavaScript 文件。

另请参阅:

主机/Web 对象共享

WebView2 允许将本机代码中定义的对象传递给应用的 Web 端代码。 主机对象 是在本机代码中定义的任何对象,你选择传递给应用的 Web 端代码。

可以将主机对象投影到 JavaScript 中,以便你可以从应用的 Web 端代码 (或其他 API) 调用本机对象方法。 例如,应用可以通过应用 Web 端的用户交互调用此类 API。 这样,就无需在 Web 端代码中重新实现本机对象的 API,例如方法或属性。

脚本执行

允许主机应用在 WebView2 控件内的 Web 内容中添加 JavaScript 代码。

Web 消息传送

你的应用可以将消息发送到 WebView2 控件中的 Web 内容,并从该 Web 内容接收消息。 消息以字符串或 JSON 对象的形式发送。

可以选择性地通过 additionalObjects (.NET、WinRT) 参数 PostWebMessageAsJson 或通过 PostWebMessageAsJsonWithAdditionalObjects (Win32) 来发布和接收 DOM 对象以及消息。 WebView2 CoreWebView2FileSystemHandle 类表示 DOM FileSystemHandle,表示 CoreWebView2File DOM File。 另 chrome.webview.postMessageWithAdditionalObjects 请参阅 JavaScript 参考。

脚本对话框

托管 WebView2 时,你的应用可以管理不同的 JavaScript 对话,以禁止显示它们或将其替换为自定义对话。

共享缓冲区

SharedBuffer API 支持基于 OS 中的共享内存在 WebView2 主机应用进程和 WebView2 呈现器进程之间共享缓冲区。

另请参阅:

浏览器功能

WebView2 控件允许应用访问许多浏览器功能。 可以修改这些浏览器功能并打开或关闭它们。

以下小节:

打印

可以通过配置自定义打印设置,将网页打印到打印机、PDF 文件或 PDF 流。

另请参阅:

Cookie

可以使用 WebView2 中的 Cookie 来管理用户会话、存储用户个性化首选项以及跟踪用户行为。

另请参阅:

图像捕获

通过托管 WebView2,应用可以捕获屏幕截图并指示保存图像的格式。

控制是否显示屏幕捕获 UI

ScreenCaptureStarting每当与 (或其任何后代 iframe 相对应的 CoreWebView2Frame WebView2 和/或 iframe) 请求在显示 UI 之前使用屏幕捕获 API 的权限时,都会引发该事件。 然后,应用可以阻止显示 UI,或允许显示 UI。

下载内容

你的应用可以在 WebView2 中管理下载体验。 你的应用可以:

  • 基于不同的元数据允许或阻止下载。
  • 更改下载位置。
  • 配置自定义下载 UI。
  • 自定义默认 UI。

常规:

修改默认体验:

自定义下载体验:

另存为

“另存为 API”允许以编程方式执行 “另存为” 操作。 可以使用这些 API 来阻止默认的“ 另存为 ”对话框,然后以无提示方式保存,或生成自己的 UI 以用于 “另存为”。 这些 API 仅适用于 “另存为 ”对话框,而不适用于使用下载 API 的“ 下载 ”对话框。

在保存文件时配置安全警告

通过侦听 SaveFileSecurityCheckStarting 事件,应用可以在此事件上注册处理程序,以获取文件路径、文件扩展名和文档源 URI 信息。 然后,可以应用自己的规则来执行如下操作:

  • 允许保存文件,而不显示有关文件类型策略的默认安全警告 UI。
  • 取消保存。
  • 创建自己的 UI 来管理运行时文件类型策略。

Web 通知处理

Web 通知 API 支持非永久性通知。 用于NotificationReceivedCoreWebView2控制 Web 通知处理的事件,允许主机应用进行自定义或抑制。 未处理的通知默认为 WebView2 的 UI。

权限

不同的网页可能会要求你提供访问某些特权资源(例如地理位置传感器、相机和麦克风)的权限。 主机应用可以编程方式响应权限请求,并且可以将默认权限 UI 替换为自己的 UI。

上下文菜单

WebView2 控件提供默认上下文菜单 (右键单击菜单) ,你可以自定义或禁用该菜单,还可以创建自己的上下文菜单。

另请参阅:

状态栏

状态栏位于页面的左下角,显示正在显示的网页的状态。 在 WebView2 中,可以启用/禁用状态栏、获取状态栏中的文本,并找出状态栏文本何时更改。

Fluent 覆盖滚动条

使用 Microsoft Fluent 设计对滚动条进行风格化,并使滚动条覆盖在 Web 内容上。 这种自适应滚动条设计可根据各种设备和窗口大小进行调整。

若要试验 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 的默认显示语言,该语言适用于浏览器 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 隐私白皮书中的 SmartScreen 中所述。

另请参阅:

自定义崩溃报告

如果任何 WebView2 进程崩溃,将创建一个或多个小型转储文件并将其发送到Microsoft进行诊断。 运行诊断并执行分析时,使用此 API 自定义崩溃报告。

  • 若要防止故障转储发送到Microsoft,请将 IsCustomCrashReportingEnabled 属性设置为 false
  • 若要查找故障转储并对其进行自定义,请使用 CrashDumpFolderPath 属性。

另请参阅:

浏览器扩展

应用可以嵌入 WebView2 控件,该控件使用浏览器扩展 (加载项) 。 Microsoft Edge 扩展 是开发人员用于添加或修改 Microsoft Edge 功能以改进用户的浏览体验的小型应用。

另请参阅:

进程管理

获取有关运行 WebView2 进程、退出进程和失败进程的信息,以便应用可以采取相应的操作。

以下小节:

框架进程信息

帧进程信息 API(包括 GetProcessExtendedInfos)提供在关联呈现器进程中主动运行的所有帧的快照集合。 此 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

iframes 允许你将其他网页嵌入到自己的网页中。 在 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 框架,并且使用合成 - 如果你的应用 UI 是使用 DirectCompositionWindows.UI.Composition 生成的,则应使用 CoreWebView2CompositionController 而不是使用这些 API;请参阅下面的 使用合成呈现 WebView2

以下小节:

调整大小、定位和可见性

CoreWebView2Controller 采用父 HWND。 属性 Bounds 相对于父 HWND的 WebView2 大小和位置。 可以使用 切换 IsVisibleWebView2 的可见性。

缩放

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 控件。

辅助功能

默认情况下,对于 Win32/C++ 应用,WebView2 将在辅助功能树中显示为父 HWND 的子级。 WebView2 提供 API,以相对于应用程序中的其他元素更好地定位 WebView2 内容。

不适用。

环境选项

以下小节:

用户数据

(UDF) (用户计算机上的文件夹)管理用户数据文件夹。 UDF 包含与主机应用和 WebView2 相关的数据。 WebView2 应用使用用户数据文件夹来存储浏览器数据,例如 Cookie、权限和缓存的资源。

以下小节:

另请参阅:

清除浏览数据:

多个配置文件

管理单个用户数据文件夹下的多个配置文件。

另请参阅:

创建定义配置文件的 options 对象:

创建使用配置文件的 WebView2 控件:

访问和操作配置文件:

删除配置文件

应用可以删除 WebView2 Web 浏览器控件的用户配置文件。

另请参阅:

运行时选择

运行时选择支持预发布测试和自承载。 创建 WebView2 环境时:

  • 若要指定浏览器预览通道的搜索顺序,请使用 CoreWebView2EnvironmentOptions.ChannelSearchKind 属性。
  • 若要指定搜索哪些浏览器预览通道,请使用 CoreWebView2EnvironmentOptions.ReleaseChannels 属性。

另请参阅:

性能和调试

分析和调试性能,处理与性能相关的事件,并管理内存使用情况,以提高应用的响应能力。

以下小节:

内存使用目标

指定内存消耗级别,例如 lownormal

Chrome DevTools 协议 (CDP)

Chrome DevTools 协议 (CDP) 提供用于检测、检查、调试和分析基于Chromium的浏览器的 API。 Chrome DevTools 协议是Microsoft Edge DevTools 的基础。 将 Chrome DevTools 协议用于 WebView2 平台中未实现的功能。

另请参阅:

打开:

叫:

接收器:

另请参阅