小编Hol*_*aii的帖子

有没有办法在 .NET 6 MAUI 中的 shell 应用程序和 webview 之间创建双向通信?

最近,我收到了在 .NET MAUI 中的 shell 应用程序和网页之间创建双向互操作桥的任务。没有找到任何方法来解决这个问题,我首先想到在 Xamarin.Forms 中创建它,因为 MAUI 是它的延续。

创建此应用程序后,我尝试使用 dotnet/maui github wiki 上的 Microsoft 说明将其转换为 MAUI。

我现在遇到的主要问题是我一直在 Android 的WebViewRendererWebViewClientJava.Lang.Object上使用扩展,以便能够向 WebView 发送和接收 javascript。

public class ExtendedWebViewRenderer : WebViewRenderer
    {
        private const String JavascriptFunction = "function invokeCSharpAction(data){jsBridge.invokeAction(data);}";

        public ExtendedWebViewRenderer(Context context) : base(context)
        {
        }

        protected override void OnElementChanged(ElementChangedEventArgs<WebView> e)
        {
            base.OnElementChanged(e);

            if (e.OldElement != null)
            {
                Control.RemoveJavascriptInterface("jsBridge");
                ((ExtendedWebView)Element).Cleanup();
            }
            if (e.NewElement != null)
            {
                Control.SetWebViewClient(new JavascriptWebViewClient($"javascript: {JavascriptFunction}"));
                Control.AddJavascriptInterface(new JsBridge(this), "jsBridge");
            }
        }
    }

public …
Run Code Online (Sandbox Code Playgroud)

javascript webview xamarin.forms maui .net-6.0

7
推荐指数
2
解决办法
3289
查看次数

标签 统计

.net-6.0 ×1

javascript ×1

maui ×1

webview ×1

xamarin.forms ×1