有用过 winform+webview2 的吗,请教个问题

2022-06-29 21:10:29 +08:00
 zxCoder

按文档的说法,Webview2 组件的 Source 属性只能是绝对路径,我现在想把一个 index.html 文件复制到整个 winform 程序的输出目录里,然后希望点击 winform.exe 的时候,里面的 webview 能访问这个 html 文件,该怎么做?

谷歌搜过好多,没找到

还是说必须把这个网页部署到线上?


我现在只能先把 source 设成另外一个地址,然后在 CoreWebView2InitializationCompleted 函数里再重新把 Source 设置成我要的文件地址,导致程序运行后很大,得过两三秒才出现页面

827 次点击
所在节点    问与答
4 条回复
darklights
2022-06-29 21:27:10 +08:00
没有用过 winform+webview2 ,但有用过 C+++webview2 。

winrt::Windows::Foundation::Uri uri{ GetExecutableDir() };
auto path = std::format(L"{}/Assets/index.html", uri.ToString().c_str()) ;
web.view->Navigate(path.c_str());

简单解释下,先取得 exe 所在的录 C:\path\to\dir
再用 Uri 类转成 file:///C:/path/to/dir/
再拼接成 file:///C:/path/to/dir/Assets/index.html 传给相应接口
zxCoder
2022-06-29 21:37:03 +08:00
@darklights

这个我刚才试过,倒是可以加载出 html ,不过 html 里要调用的 js 就报跨域错误了。不知道咋整
zxCoder
2022-06-29 21:39:35 +08:00
@darklights 又查了一下解决这里的跨域问题。搞定了,多谢多谢
ysc3839
2022-06-29 21:59:37 +08:00
用 SetVirtualHostNameToFolderMapping

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/863031

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX