V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
zxCoder
V2EX  ›  问与答

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

  •  
  •   zxCoder · Jun 29, 2022 · 925 views
    This topic created in 1398 days ago, the information mentioned may be changed or developed.

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

    谷歌搜过好多,没找到

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


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

    darklights
        1
    darklights  
       Jun 29, 2022   ❤️ 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
       Jun 29, 2022
    @darklights

    这个我刚才试过,倒是可以加载出 html ,不过 html 里要调用的 js 就报跨域错误了。不知道咋整
    zxCoder
        3
    zxCoder  
    OP
       Jun 29, 2022
    @darklights 又查了一下解决这里的跨域问题。搞定了,多谢多谢
    ysc3839
        4
    ysc3839  
       Jun 29, 2022 via Android
    用 SetVirtualHostNameToFolderMapping
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   997 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 22:25 · PVG 06:25 · LAX 15:25 · JFK 18:25
    ♥ Do have faith in what you're doing.