Xamarin.ios 如何使用MonoTouch调用javascript函数,反之亦然?

Xamarin.ios 如何使用MonoTouch调用javascript函数,反之亦然?,xamarin.ios,Xamarin.ios,我刚开始使用monotouch 我的问题是我想从monotouch函数调用javascript函数,javascript函数也可以调用monotouch函数 我相信用objective c这个问题是可能的,但我需要用MonotTouch来解决 请帮帮我 任何帮助都要感谢advance我没有在monotouch中尝试过,但它应该与ObjC中的相同: UIWebView.EvaluateJavascript 要从应用程序调用在UIWebView中运行的Javascript代码,请使用Evaluat

我刚开始使用monotouch

我的问题是我想从monotouch函数调用javascript函数,javascript函数也可以调用monotouch函数

我相信用objective c这个问题是可能的,但我需要用MonotTouch来解决

请帮帮我


任何帮助都要感谢advance

我没有在monotouch中尝试过,但它应该与ObjC中的相同:

UIWebView.EvaluateJavascript

要从应用程序调用在UIWebView中运行的Javascript代码,请使用EvaluateJavascript方法,如下所示:

myView.EvaluateJavaScript ("a = 1;");
myView.ShouldStartLoad = myHandler;

[...]

bool myHandler (UIWebView webView, NSUrlRequest request, UIWebViewNavigationType navType)
{
    // Determine what to do here based on the @request and @navType
} 
// Javascript code:
location.href = "myapp://action?par1=abc&par2=def"
要回拨到C#代码中,唯一的选择是连接到ShouldStartLoad属性,如下所示:

myView.EvaluateJavaScript ("a = 1;");
myView.ShouldStartLoad = myHandler;

[...]

bool myHandler (UIWebView webView, NSUrlRequest request, UIWebViewNavigationType navType)
{
    // Determine what to do here based on the @request and @navType
} 
// Javascript code:
location.href = "myapp://action?par1=abc&par2=def"
当然,如果希望轻松访问局部变量,也可以使用匿名方法:

myView.ShouldStartLoad = (webView, request, navType) => {
     // Determine here what to do
}
在Javascript端,如果您想回拨Mono,则将location.href属性设置为“特殊”url,如下所示:

myView.EvaluateJavaScript ("a = 1;");
myView.ShouldStartLoad = myHandler;

[...]

bool myHandler (UIWebView webView, NSUrlRequest request, UIWebViewNavigationType navType)
{
    // Determine what to do here based on the @request and @navType
} 
// Javascript code:
location.href = "myapp://action?par1=abc&par2=def"

信息将在request对象上提供:request.Url.AbsoluteString

我刚刚发布了MonoTouch JsBridge,以简化此操作。它允许您在本机端和UIWebView之间添加事件侦听器和激发事件。它的灵感来自钛


谢谢你,米格尔!!无数次了,谢谢!!这也回答了我的问题。。。我的问题是:。我正忙于构建javascript和monotouch之间双向通信的桥接机制,并一直在努力实现ShouldStartLoad委托。这给了我使它工作所需的信息。:::)好的,太好了。我正在尝试覆盖一个ajax调用。我可以用一个调用特殊url的函数替换PageMethods.Method(),就像你说的,但是我需要这个调用来给出响应。我该怎么做?request.Url.AbsoluteString对于任何调用都保持不变。如何通过”myapp://action?par1=abc&par2=def“使用url