在Xamarin.Forms WebView中执行Javascript
我正在尝试使用下面介绍的教程在我的Xamarin.Forms WebView中执行Javascript: 安卓系统运行得很好,但我在iOS上设置时遇到了问题。在iOS自定义渲染器中,我基本上通过 返回Task.FromResult(this.EvaluateJavascript(js)) 自去年以来,iosapi发生了变化,这一行在调试时抛出了一个错误。事实证明,我应该使用WkWebViewRenderer而不是WebViewRenderer。我试图更改,但EvaluateJavascript()方法现在需要两个参数。。。一个是js字符串,一个是WKJavascriptEvaluationResult处理程序在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
我不知道如何调整教程中的代码。。。有人能帮忙吗?应该是这样的:
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;