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