【问题标题】:How to pass a variable from webview Javascsript to Xamarin Forms code?如何将变量从 webview Javascsript 传递到 Xamarin Forms 代码?
【发布时间】:2020-08-05 13:38:41
【问题描述】:

我有一个网页,它从用户那里获取一些信息,在服务器端 PHP 上对其进行处理,然后从服务器获取响应。

现在我需要在我的 Xamarin Forms 应用程序中实现这个(包括 web UI),所以我想有一个 webview 来加载网页的 URL,但现在我不知道(即使谷歌搜索也不行)如何将 Javscript 的结果变量的值返回给 C#。

这是一个 Javascript 示例:-

xhttp.onreadystatechange = function () {
    if (this.readyState == 4 && this.status == 200) {
      let data = JSON.stringify(JSON.parse(this.responseText));
      // Now I want to pass 'data' variable to C#
    }
};

应用程序应该等到它收到这个变量的值然后执行其他事情,或者直到用户按下后退按钮来取消整个事情......

任何帮助表示赞赏,在此先感谢。 ^_^

【问题讨论】:

标签: javascript c# xamarin xamarin.forms webview


【解决方案1】:

首先,为 webview 创建自定义渲染器。

然后,在各个平台用原生api封装js函数,添加到webview中。

调用函数并传递数据,该方法也会在渲染器中触发。

请参阅https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/custom-renderer/hybridwebview

【讨论】:

  • 问题是网页和javascript代码不是本地的,我不能只是将js代码包装在Xamarin应用程序本身中,而且我不能很好地理解文档。也许你可以举个例子?
  • 我确实检查了示例链接,但同样的问题,它使用本地 html 页面,另一方面,我想加载一个外部的,一个 url 链接...
  • 但是,我修改了自定义渲染器以允许使用外部链接,所以我将其视为答案^_^ 还有一件事,如何添加窗口属性,在 JS 中我可以说 @987654323 @ 但是如何在加载 url 时分配 uid 本身?!
  • 你的意思是调用方法时如何传递数据?
猜你喜欢
  • 2019-08-19
  • 1970-01-01
  • 2011-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-08
  • 2014-07-12
  • 1970-01-01
相关资源
最近更新 更多