V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
zxCoder
V2EX  ›  问与答

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

  •  
  •   zxCoder · 2022-06-29 21:10:29 +08:00 · 555 次点击
    这是一个创建于 680 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    谷歌搜过好多,没找到

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


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

    darklights
        1
    darklights  
       2022-06-29 21:27:10 +08:00   ❤️ 1
    没有用过 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
        2
    zxCoder  
    OP
       2022-06-29 21:37:03 +08:00
    @darklights

    这个我刚才试过,倒是可以加载出 html ,不过 html 里要调用的 js 就报跨域错误了。不知道咋整
    zxCoder
        3
    zxCoder  
    OP
       2022-06-29 21:39:35 +08:00
    @darklights 又查了一下解决这里的跨域问题。搞定了,多谢多谢
    ysc3839
        4
    ysc3839  
       2022-06-29 21:59:37 +08:00 via Android
    用 SetVirtualHostNameToFolderMapping
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3680 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 10:42 · PVG 18:42 · LAX 03:42 · JFK 06:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.