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截获请求并发送回结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/432568.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RocketMQ 常用命令mqadmin与控制面板

使⽤发送和接收消息验证MQ 验证生产者&#xff1a; 配置 nameserver 的环境变量 &#xff0c;在发送/ 接收消息之前&#xff0c;需要告诉客户端 nameserver 的位置。配置环境变量 NAMESRV_ADDR &#xff1a; vim /etc/profileexport NAMESRV_ADDR"192.168.136.66:9876;1…

【网络安全】网络基础第一阶段——第一节:网络协议基础---- OSI与TCP/IP协议

从今天起&#xff0c;我们正式进入第二部分——网络基础。继续学习网络基础、网络协议等相关内容&#x1f31f;&#x1f31f;&#x1f31f; 目录 一、OSI模型 1.1 分层思想 1.2 OSI参考模型 1.3 数据封装与解封装 1.3.1 数据的封装过程 1.3.2 数据的解封装过程 二、TCP/…

探索C语言与Linux编程:获取当前用户ID与进程ID

探索C语言与Linux编程:获取当前用户ID与进程ID 一、Linux系统概述与用户、进程概念二、C语言与系统调用三、获取当前用户ID四、获取当前进程ID五、综合应用:同时获取用户ID和进程ID六、深入理解与扩展七、结语在操作系统与编程语言的交汇点,Linux作为开源操作系统的典范,为…

2025年第十届智能信息技术国际会议 (ICIIT 2025)即将召开!

第10届智能信息技术国际会议&#xff08;ICIIT 2025&#xff09;将于2025年2月20日至23日在越南河内举行。ICIIT系列会议将每年举行&#xff0c;为智能信息技术及相关领域提供互动论坛&#xff0c;除了越南的研究人员外&#xff0c;会议小组还欢迎来自世界各地的有兴趣与该地区…

【在Linux世界中追寻伟大的One Piece】进程间通信

目录 1 -> 进程间通信介绍 1.1 -> 进程间通信目的 1.2 -> 进程间通信发展 1.3 -> 进程间通信分类 1.3.1 -> 管道 1.3.2 -> System V IPC 1.3.3 -> POSIX IPC 2 -> 管道 2.1 -> 什么是管道 2.2 -> 匿名管道 2.3 -> 实例代码 2.4 -…

JavaScript typeof运算符

在js中可以typeof来做到确定一个值到底是什么类型。 <script>var num 100;//数值类型var name "mingzi";//字符串类型var book true;//布尔类型var student {name: " 小明",age: 16,tnum: "213444"}//对象是由多个数据组合而成&#x…

[NewStarCTF 2023 公开赛道]Begin of PHP1

开始代码审计. <?php error_reporting(0); highlight_file(__FILE__);if(isset($_GET[key1]) && isset($_GET[key2])){echo "Level 1<br>";if($_GET[key1] ! $_GET[key2] && md5($_GET[key1]) md5($_GET[key2])){$flag1 True;}else{die(…

项目实战:Qt+OSG爆破动力学仿真三维引擎测试工具v1.1.0(加载.K模型,子弹轨迹模拟动画,支持windows、linux、国产麒麟系统)

若该文为原创文章&#xff0c;转载请注明出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/142454993 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、Op…

第24届工博会盛大开启,大腾智能携前沿数字化解决方案亮相

2024年9月24日&#xff0c;第24届中国国际工业博览会(ICIF China 2024)&#xff08;以下简称“工博会”&#xff09;在上海盛大开幕。本届工博会以“新质领航 数字赋能”为主题&#xff0c;覆盖工业自动化、智能制造等多个领域&#xff0c;汇聚全球制造业的精英与前沿技术&…

MySQL连接查询解析与性能优化成本

文章目录 一、连接查询1.连接查询基础1. INNER JOIN内连接2. LEFT JOIN (或 LEFT OUTER JOIN)左外连接3. RIGHT JOIN (或 RIGHT OUTER JOIN)右外连接4. FULL OUTER JOIN 2.连接查询的两种过滤条件3.连接的原理 二、性能优化成本1.基于成本的优化2.调节成本常数(1)mysql.server_…

Tangle解压玩具商标重复维权,尚未TRO,卖家速查

案件基本情况&#xff1a;起诉时间&#xff1a;2024-9-13案件号&#xff1a;2024-cv-61700品牌&#xff1a;Tangle原告&#xff1a;Tangle Inc.原告律所&#xff1a;Boies Schiller Flexner起诉地&#xff1a;佛罗里达州南部法院涉案商标/版权&#xff1a;原告品牌简介&#xf…

linux远程工具MobaXterm的安装和使用

一、安装和运行 1、下载 地址&#xff1a;&#xff08;手机夸克转存后下载是对作者最大的支持&#xff09;https://pan.quark.cn/s/32e1f5e5e95c 2、解压 解压到到常用软件目录下&#xff0c;如C:\Program Files 3、运行 双击MobaXterm_Personal_24.2.exe运行&#xff0c;…

Python 使用selenium 4.25 进行爬虫(1)

都说python做爬虫比较好&#xff0c;于是我跟着大家的脚步学习python进行爬虫&#xff0c;但是调试了半天&#xff0c;出现各种各样的问题&#xff0c;最终都得到实现了&#xff0c;下面我们来看具体的代码&#xff1a; from selenium import webdriver from selenium.webdriv…

【Python报错已解决】TypeError: can only concatenate str (not “int“) to str

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 专栏介绍 在软件开发和日常使用中&#xff0c;BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

failed to load steamui.dll的多种处理方法,steamui.dll的作用

在使用Steam平台时&#xff0c;不少玩家可能会遇到“failed to load steamui.dll”这样令人头疼的错误提示。这个错误会阻碍Steam客户端的正常运行&#xff0c;影响我们享受游戏和Steam平台的各种服务。不过&#xff0c;不必过于担心&#xff0c;因为有多种方法可以尝试解决这个…

一招搞定苹果安卓跨系统传输,文件大小再也不是问题

在当今多元化的科技市场中&#xff0c;众多手机品牌竞相推出各自的产品&#xff0c;每个品牌都力图打造独特的用户体验和生态系统。然而&#xff0c;这种品牌之间的多样性也带来了一定的挑战&#xff0c;尤其是在不同品牌体系之间互联互通性方面。由于每个品牌都有自己的操作系…

网站设计中安全方面都需要有哪些考虑

网站设计中的安全性是一个多方面的问题&#xff0c;需要从多个角度进行考虑和实施。以下是一些关键的安全考虑因素&#xff1a; 数据加密&#xff1a; 使用SSL&#xff08;安全套接字层&#xff09;证书来建立加密连接&#xff0c;确保数据在传输过程中不被截获。定期更新SSL证…

神经网络(四):UNet图像分割网络

文章目录 一、简介二、网络结构2.1编码器部分2.2解码器部分2.3完整代码 三、实战案例 一、简介 UNet网络是一种用于图像分割的卷积神经网络&#xff0c;其特点是采用了U型网络结构&#xff0c;因此称为UNet。该网络具有编码器和解码器结构&#xff0c;两种结构的功能如下&#…

【第十七章:Sentosa_DSML社区版-机器学习之异常检测】

【第十七章&#xff1a;Sentosa_DSML社区版-机器学习之异常检测】 机器学习异常检测是检测数据集中的异常数据的算子&#xff0c;一种高效的异常检测算法。它和随机森林类似&#xff0c;但每次选择划分属性和划分点&#xff08;值&#xff09;时都是随机的&#xff0c;而不是根…

LVS-DR实战案例,实现四层负载均衡

环境准备&#xff1a;三台虚拟机&#xff08;NET模式或者桥接模式&#xff09; 192.168.88.200 &#xff08;web1&#xff09;(安装nginx服务器作为测试) 192.168.88.201 &#xff08;服务器&#xff09;&#xff08;用于部署lvs-dr&#xff09; 192.168.88.202 (web2)…