我正在将我们的应用程序从 Xamarin 迁移到 MAUI,并且在 Android 和 iOS 上的 WebView 中迁移处理 JS/.NET 交互的代码时遇到了一些困难。让我们重点关注Android。尤其是在 WebView 中从 JS 调用 .NET 代码。
在Xamarin中,我们可以做这样的事情(基本上根据本教程https://learn.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/custom-renderer/hybridwebview):
protected override void OnElementChanged(ElementChangedEventArgs<WebView> e)
{
base.OnElementChanged(e);
if (e.OldElement != null)
{
Control.RemoveJavascriptInterface("jsBridge");
}
if (e.NewElement != null)
{
Control.SetWebViewClient(new JavascriptWebViewClient(this, $"javascript: {JavascriptFunction}"));
Control.AddJavascriptInterface(new JsBridge(this), "jsBridge");
}
}
Run Code Online (Sandbox Code Playgroud)
和
public class JavascriptWebViewClient : FormsWebViewClient
{
private readonly string javascript;
public JavascriptWebViewClient(HybridWebViewRenderer renderer, string javascript) : base(renderer)
{
this.javascript = javascript;
}
public override void OnPageFinished(WebView view, string url)
{ …Run Code Online (Sandbox Code Playgroud)