WPF与WebView2双向通信 WPF与javascript相互通信 WPF制作的浏览器与网页双向通信 WPF与网页相互通信 WPF与JS双向通信 有实例及源码

上一篇已经介绍 WPF集成WebView2 完整例子及Demo

 现在需要c#的数据与显示的网页能双向通信

  1. WPF与WebView2之间的相互通信具有以下优点:

    • 灵活性: 双向通信使得本地应用程序能够与网页内容无缝集成,提供丰富的交互体验。

    • 代码复用: 网页开发者可以复用现有的Web技术栈和前端框架,同时利用WPF的强大功能。

    • 安全性和隔离性: 通过WebView2,网页内容在单独的进程中运行,提供了额外的安全层和资源隔离。

    • 性能优化: 相比于传统的嵌入式浏览器控件,WebView2基于现代的Chromium内核,提供了更好的性能和兼容性。

    • 扩展性: 通过JavaScript接口和消息传递机制,可以轻松地扩展和定制WebView2的功能,满足特定的应用需求。

    • 更新和维护: 由于WebView2依赖于持续更新的Chromium项目,因此可以享受到最新的Web特性和安全性修复。

WPF应用程序可以利用WebView2控件与网页内容进行高效的通信,构建功能丰富、用户体验优秀的混合型桌面应用。

完整例子下载 https://download.csdn.net/download/weijia3624/88670091

 

 private void webView_WebMessageReceived(object sender, CoreWebView2WebMessageReceivedEventArgs e)
        {
            //接收到的字符串
            string msg = e.TryGetWebMessageAsString();
            Console.WriteLine("msg-->" + msg);

            接收到的json
            //string msgJson = e.WebMessageAsJson;
            //Console.WriteLine("msgJson-->" + msgJson);
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            this.webView.WebMessageReceived += webView_WebMessageReceived;
        }

        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            // 确保 CoreWebView2 已经初始化完成
            if (webView.CoreWebView2 != null)
            {
                try
                {
                    JObject postJson = new JObject();
                    postJson["Name"] = "小明";
                    // 将数据序列化为 JSON 字符串
                    string jsonData = JsonConvert.SerializeObject(postJson);
                    //Console.WriteLine(jsonData);
                    // 向 WebView2 发送 JSON 数据 PostWebMessageAsString  PostWebMessageAsJson
                    webView.CoreWebView2.PostWebMessageAsJson(jsonData);
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Error sending message: " + ex.Message);
                }
            }
        }
<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title>测试通信</title>
    <script>
        window.onload = function () {
            //alert("onload-success");
        }
        function postMsg() {
            var args = "hello,this msg come from webView2 JS!";
            window.chrome.webview.postMessage(args);
            alert("发送成功,内容:" + args);
        }

        // 在这里处理接收到c#的消息
        window.chrome.webview.addEventListener("message", receiveMessage);
        function receiveMessage(event) {
          alert(JSON.stringify(event.data));
        }
    </script>
</head>
<body>
    <p>你好,这是一个webview2里面的JS与C#通信的简单例子</p>
    </br>
    </br>
    <button type="button" onclick="postMsg()">JS发送信息给C#</button>
</body>
</html>

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在C#中使用WebView2控件,可以通过以下步骤与网页中的JavaScript进行交互: 1. 首先,确保你已经在项目中安装了Microsoft.Web.WebView2 NuGet包。 2. 在XAML文件中,将WebView2控件添加到窗口中: ```xml <Window ... xmlns:wv2="clr-namespace:Microsoft.Web.WebView2.Wpf;assembly=Microsoft.Web.WebView2.Wpf" > <Grid> <wv2:WebView2 x:Name="webView" Source="https://www.example.com" /> </Grid> </Window> ``` 3. 在代码中,可以使用以下代码来在WebView2控件加载完成后添加JavaScript事件监听器: ```csharp private async void WebView_CoreWebView2Ready(object sender, RoutedEventArgs e) { await webView.EnsureCoreWebView2Async(); webView.CoreWebView2.WebMessageReceived += CoreWebView2_WebMessageReceived; } ``` 4. 接下来,你可以通过以下代码向网页中注入JavaScript代码: ```csharp await webView.CoreWebView2.AddScriptToExecuteOnDocumentCreatedAsync("function sendMessageToHost(message) { window.chrome.webview.postMessage(message); }"); ``` 5. 在网页中,你可以通过以下代码与C#代码进行通信: ```javascript // 向C#发送消息 window.chrome.webview.postMessage("Hello from JavaScript!"); // 接收C#发送的消息 window.chrome.webview.addEventListener('message', event => { console.log(`Received message: ${event.data}`); }); ``` 6. 在C#代码中,你可以通过以下代码接收来自网页的消息: ```csharp private void CoreWebView2_WebMessageReceived(object sender, CoreWebView2WebMessageReceivedEventArgs e) { string message = e.TryGetWebMessageAsString(); Console.WriteLine($"Received message: {message}"); } ``` 以上就是在C#中使用WebView2控件与网页中的JavaScript进行交互的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weijia3624

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值