在 Maui WebView 中,你可以使用 JavaScript 与 C# 代码进行交互。以下是一种常见的方法,可以通过 JavaScript 调用 C# 代码:

  1. 首先,在 C# 中创建一个可供 JavaScript 调用的方法。你可以将这个方法添加到你的 MainPage.xaml.cs 或其他相关的 C# 文件中。例如,创建一个名为 “ShowMessage” 的方法:

    using Microsoft.Maui.Controls;
    using Microsoft.Maui.Essentials;
    
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
    
            webView.Source = new UrlWebViewSource
            {
                Url = "https://example.com"
            };
    
            webView.RegisterCallback("showMessage", ShowMessage);
        }
    
        private void ShowMessage(string message)
        {
            // 在这里可以处理来自 JavaScript 的消息
            MainThread.InvokeOnMainThreadAsync(() => DisplayAlert("Message", message, "OK"));
        }
    }
  2. 在 JavaScript 中,使用 window.webkit.messageHandlers 对象来调用 C# 方法。在 WebView 加载完成后,你可以使用 JavaScript 调用 C# 方法。例如,在 HTML 中添加一个按钮的点击事件:

    <button onclick="showMessage('Hello from JavaScript')">Show Message</button>
  3. 在 WebView 的加载完成事件中,添加一段 JavaScript 代码,该代码用于监听按钮的点击事件,并调用 C# 方法。例如,在 C# 代码中添加以下代码:

    webView.SourceChanged += (s, e) =>
    {
        var javascript = @"
        <script>
            function showMessage(message) {
                window.webkit.messageHandlers.showMessage.postMessage(message);
            }
    
            document.querySelector('button').addEventListener('click', function() {
                showMessage('Hello from JavaScript');
            });
        </script>";
    
        webView.Eval(javascript);
    };

    上述代码中,JavaScript 代码会在 WebView 的加载完成时注入到页面中,并添加一个点击事件监听器,将消息传递给 showMessage 方法。

  4. 使用 window.webkit 对象,可以像调用其他 JavaScript 方法一样调用 showMessage 方法:

    showMessage('Hello from JavaScript');

    当点击按钮或调用 JavaScript 方法时,C# 中的 ShowMessage 方法将被触发,并显示一个对话框。

这就是在 Maui WebView 中使用 JavaScript 调用 C# 代码的基本步骤。你可以根据自己的需求进行更多的自定义和交互操作。

文档更新时间: 2023-07-12 16:18   作者:admin