在Xamarin.Forms WebView中执行Javascript

在Xamarin.Forms WebView中执行Javascript,javascript,xamarin,xamarin.forms,webview,wkwebview,Javascript,Xamarin,Xamarin.forms,Webview,Wkwebview,我正在尝试使用下面介绍的教程在我的Xamarin.Forms WebView中执行Javascript: 安卓系统运行得很好,但我在iOS上设置时遇到了问题。在iOS自定义渲染器中,我基本上通过 返回Task.FromResult(this.EvaluateJavascript(js)) 自去年以来,iosapi发生了变化,这一行在调试时抛出了一个错误。事实证明,我应该使用WkWebViewRenderer而不是WebViewRenderer。我试图更改,但EvaluateJavascript

我正在尝试使用下面介绍的教程在我的Xamarin.Forms WebView中执行Javascript:

安卓系统运行得很好,但我在iOS上设置时遇到了问题。在iOS自定义渲染器中,我基本上通过

返回Task.FromResult(this.EvaluateJavascript(js))

自去年以来,iosapi发生了变化,这一行在调试时抛出了一个错误。事实证明,我应该使用WkWebViewRenderer而不是WebViewRenderer。我试图更改,但EvaluateJavascript()方法现在需要两个参数。。。一个是js字符串,一个是WKJavascriptEvaluationResult处理程序


我不知道如何调整教程中的代码。。。有人能帮忙吗?

应该是这样的:

    WKJavascriptEvaluationResult handler = (NSObject result, NSError error) => {
        if (error != null)
        {
            Console.WriteLine(result.ToString());
        }
    };
    webView.EvaluateJavaScript(JSCode, handler);
    
我刚换了衣服

return Task.FromResult(this.EvaluateJavascript(js));
致:


现在它可以工作了

尝试调整iOS渲染器,就像我不知道如何在需要时在运行时调用它并从中获取返回值一样。您建议的解决方案中的javascript看起来像是添加时运行一次的脚本。我需要按需获取javascript结果。我有一个lambda表达式,需要在其中返回一些内容。我无法返回webView.EvaluateJavaScript(js,handler)的结果;因为它是void类型,所以您可以在处理程序中获得结果,正如我在回答中所写的:
Console.WriteLine(result.ToString())。这是正确的,但如何将结果输入表单页面?我需要去拿它。在我的例子中,虽然界面很简单,但它不再工作了。我试图在处理程序中设置一个变量:x=result.ToString();然后返回x,但这只在我调用Javascript函数两次的情况下才能正常工作?怎么样?不,我的意思是我在表单页面上的视图模型上调用一行函数,方法是var result=await EvaluateJavascript(“javascriptfunction”);这是我从iOS和安卓系统得到的结果。因为返回Task.FromResult(this.EvaluateJavascript(js));在iOS端不再工作了,我不知道如何将值返回到我的视图模型。我可以控制台.WriteLine()处理程序结果,但我无法返回itOk,您可以稍后标记此答案,这将帮助更多有相同问题的人:)。
var x = await webView.EvaluateJavascriptAsync(js);
return x;