当前位置: 首页 > news >正文

webview2加载本地页面

加载方式

通过导航到文件 URL 加载本地内容

使用方式:
webView->Navigate( L"file:///C:/Users/username/Documents/GitHub/Demos/demo-to-do/index.html");
但是这种方式存在一些问题,比如:

  1. 存在跨域问题(我加载的vue写得本地页面)

参考以下链接解决问题:

  1. WebView2 浏览器标志
  2. 全局总结

解决方法:

  1. 设置环境变量
    ​​​​​​![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=image.png&pos_id=img-Oiwwzsqe-1727069632557在这里插入图片描述
  2. 在创建WebView2控件之前,在代码中添加进程环境变量:
    SetEnvironmentVariable(L"WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS", L"--allow-file-access-from-files --disable-web-security");
  3. 创建WebView2时指定EnvironmentOptions,例如:
#include <WebView2EnvironmentOptions.h>
...
std::wstring args;
args.append(L"--allow-file-access-from-files --disable-web-security");
auto options = Microsoft::WRL::Make<CoreWebView2EnvironmentOptions>();
options->put_AdditionalBrowserArguments(args.c_str());
CreateCoreWebView2EnvironmentWithOptions(nullptr, nullptr, options.Get(),
	Callback<ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler>(
		//回调函数
        ...
    )
)

以上方式实测有效。

导航到 HTML 字符串的示例

个人测试加载html字符串,对于html中引入了css和js,加载不太友好。

使用虚拟主机名映射加载本地内容

推荐使用这种方式,加载速度比WebResourceRequested快(实测的确是快点),但是需要支持:ICoreWebView2_3

wil::com_ptr<ICoreWebView2_3> webView;
webView = webview.try_query<ICoreWebView2_3>();
if (!webView.get())
{
				
}
else
{
webView->SetVirtualHostNameToFolderMapping(L"demo", L"C:\\Github\\Demos\\demo-to-do", 
                                  COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND_DENY_CORS);
webView->Navigate(L"https://demo/index.html");
}

通过处理 WebResourceRequested 事件加载本地内容

这种方式是通过截获网络请求,然后返回需要的数据。以达到成功请求的假象。
代码见参考文档:
WebResourceRequested截获请求并发送回结果

相关文章:

  • Git常用命令详解
  • 用最新的C++技术,如何实现一个序列化工具库?
  • 提前解锁 Vue 3.5 的新特性
  • 【Java】接口interface【主线学习笔记】
  • 7.搭建个人金融数据库之快速获取股票列表和基本信息!
  • 英特尔®以太网网络适配器E810-CQDA1 / E810-CQDA2 网卡 规格书 e810 网卡 规格书 Intel100G E810 网卡 白皮书
  • 【Redis技能熟练掌握之十年内功】
  • JVM内存区域-堆(Heap)
  • 基于c++实现的简易shell
  • 【PostgreSQL】PostgreSQL数据库允许其他IP连接到数据库(Windows Linux)
  • Tauri 应用 input 输入自动大写问题定位解决
  • 计算机毕业设计 校运会管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • vue3 选择字体的颜色,使用vue3-colorpicker来选择颜色
  • 机械快门,电子快门,电子前帘快门 的原理
  • 9月23日
  • C# Action和delegate区别及示例代码
  • GUI编程之MATLAB入门详解(01)
  • qt-C++笔记之作用等同的宏和关键字
  • Highcharts甘特图基本用法(highcharts-gantt.js)
  • 阿里云 Quick BI使用介绍
  • 梅花奖在上海丨陈丽俐“婺剧折戏专场”:文戏武做,武戏文唱
  • 巫蛊:文化的历史暗流
  • 一生要出片的年轻人,买爆相机
  • 2025年4月份CPI环比由降转涨,核心CPI涨幅稳定
  • 夜读丨喜马拉雅山的背夫
  • 欧洲理事会前主席米歇尔受聘中欧国际工商学院特聘教授,上海市市长龚正会见