WebView2介绍 作者:马育民 • 2026-07-22 12:54 • 阅读:10006 # 介绍 WebView2(Microsoft Edge WebView2)是微软推出的**Windows平台控件**,基于 Chromium 内核(和新版 Edge 浏览器同源) ### 作用 让原生桌面应用(Win32、WPF、WinForms、C++、Delphi、Python、Electron 等)嵌入网页渲染能力。 ### 简单理解 在桌面软件里内置一套完整浏览器内核,用来展示网页、运行前端页面,替代老旧、基于 IE 的 WebBrowser 控件。 > 区分:旧 WebBrowser = IE 内核;WebView2 = Chromium(Edge)内核。仅支持 Windows,不支持 macOS/Linux。 # 架构模式(两种分发模型) ### 1. 独立运行时模式(Evergreen 常青模式,推荐) - 用户电脑安装**全局 WebView2 Runtime**(独立安装包),所有使用 WebView2 的软件共用这一套内核。 - 优点:自动跟随系统更新修复漏洞、体积小、减少磁盘占用。 - 缺点:程序运行前提是目标机器预装 Runtime;无网络环境下无法自动更新内核。 ### 2. 内置运行时模式(独立打包模式 / Standalone) - 开发者把完整 WebView2 内核文件随软件一起打包发布。 - 优点:不需要用户提前安装运行时,开箱即用;版本可控,不会被系统更新改动内核。 - 缺点:安装包体积巨大(数百MB);不会自动接收浏览器安全补丁,需要软件新版本同步更新内核。 # 功能 1. **完整现代网页标准支持** 支持 HTML5、CSS3、ES6+、WebAssembly、Media、Canvas、WebGL,兼容现代前端框架 Vue/React/Angular,不再存在 IE 的兼容性缺陷。 2. **原生程序 ↔ 前端双向通信(关键特性)** - JS 调用桌面原生方法:网页 JavaScript 发送消息,桌面程序接收并执行业务逻辑(读写本地文件、调用硬件、访问系统API、数据库)。 - 原生程序调用 JS:桌面端主动向页面注入脚本、执行前端函数,向前端推送数据。 > 通信基于消息通道,支持同步/异步调用,可以传递 JSON 数据。 3. **本地资源加载** 可以加载:远程网络网页、本地静态html、内嵌资源;支持自定义本地虚拟域名,把本地文件夹映射成网页可访问地址,实现不启动Web服务器直接访问本地前端资源。 4. **浏览器基础能力** Cookie、缓存、本地存储(localStorage/sessionStorage/indexDB)、权限控制、打印、下载、文件上传、网页弹窗、历史前进后退、缩放、上下文菜单。 5. **脚本注入** 在页面加载前/加载完成后自动注入JavaScript、CSS;支持屏蔽页面广告、修改页面DOM、拦截网页请求。 6. **网络请求拦截** 可拦截网页发出的HTTP/HTTPS请求,修改请求头、重定向地址、直接返回自定义响应;常用于接口代理、内网页面适配、鉴权处理。 # 数据存储与用户配置 WebView2 所有缓存数据隔离在**用户配置目录(Profile)**: - Cookie、缓存、localStorage、indexDB、证书、密码、网站权限全部保存在此文件夹。 - 重要特性:**支持多实例独立配置文件**。 多个WebView窗口可以共用一套缓存,或者每个窗口使用独立文件夹,实现登录隔离(软件内同时登录两套账号互不干扰)。 - 开发者可自定义存储路径;也可以选择**临时模式(无痕模式)**,程序关闭自动清空所有数据,不写入磁盘。 # 常见可开发平台 支持WebView2的桌面框架 - C++ Win32(底层原生API) - .NET:WinForms、WPF - .NET MAUI - Delphi / Lazarus - Python (PyWebView、wxPython) - PowerShell - Electron(Windows下可选用WebView2渲染,替代内置Chromium) - Visual Basic 6(第三方封装组件) # 与同类嵌入式浏览器控件对比 1. WebView2 vs 旧 WebBrowser(IE) WebBrowser:内核老旧、不支持现代前端、停止微软维护、大量前端框架无法运行;仅遗留项目使用。 WebView2:持续更新、标准兼容、功能完善。 2. WebView2 vs CEF(Chromium Embedded Framework) CEF:开源、跨平台(Windows/macOS/Linux),体积大,需要自行打包Chromium。 WebView2:微软维护,仅限Windows;常青模式下无需携带内核,部署简单;API更轻量化,但跨平台能力缺失。 3. WebView2 vs WebKit WebKit多用于macOS、移动端;Windows生态优先选择WebView2。 # 常用场景 1. 传统桌面软件嵌入前端管理界面,界面用网页开发,业务底层保留原生代码; 2. 客户端单页应用:打包Vue/React页面做成独立桌面软件(轻量替代Electron); 3. 内网业务系统客户端,内置网页门户; 4. 软件内置帮助文档、交互式可视化报表; 5. 自动化测试、网页抓取工具。 # 局限性 1. **仅支持Windows系统**,Windows最低版本:Windows 10 / Windows 11;不支持Win7(新版Runtime不再支持Win7)、macOS、Linux。 2. 依赖WebView2 Runtime,常青模式下需要处理用户未安装运行时的兼容弹窗引导; 3. 无法脱离Chromium内核,不能极致精简软件体积(除非使用常青模式); 4. GPU渲染异常、高DPI缩放、系统深色模式需要额外适配。 原文出处:http://www.malaoshi.top/show_1GW3iqk6Ik1a.html