Vue 打包项目在 WebView2 中未收到 C# 发送的数据,如何排查和解决问题?

作者站长头像
站长
· 阅读数 13

我有1个windows C#项目,项目里要使用1个vue项目,vue项目现在已经打好包,放入在windows项目内,window项目使用的是 webView2引用vue打好包的主页index.html

我的需求:在打开vue页面时,index.html需要使用设备列表数据,数据是webView2传给前端,

这是后端代码

      // 下面能正常接收到消息
                // webView21.Source = new Uri("file:///D:/Work/Git/cmvrf/CMVRF/Project3/development/test.html");
                // 下面接收不到消息
                 webView21.Source = new Uri("file:///D:/Work/Git/cmvrf/CMVRF/Project3/development/index.html#/haierDragDropSystem?lang=en&isdark=1");
                
                webView21.CoreWebView2.WebMessageReceived += GetDrawInfo;

这是前端代码

    //  这里是前端 接收C#消息:
window.chrome.webview.addEventListener("message", function (event) {
      // 设备列表
      console.log(event.data);
    });

现在有1个问题,如果只用单独的test.html接收event.data是能正常收到数据,但是如果用vue打包好的项目index.html接收不到event.data,是不是vue项目的index.html打开有延时,C#发送的消息提前发送了,在index.html打开时addEventListener("message")监听不到了,这种情况怎么办?

回复
1个回答
avatar
test
2024-06-19
// 增加了这句就可以了    
window.chrome.webview.postMessage("successload");

    //  接收C#消息:
    window.chrome.webview.addEventListener("message", function (event) {//...})
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容