mono touch中WebView与html之间的交互

有不明白的地方欢迎入群 347636249 探讨

NSBundle.MainBundle.BundlePath

和朋友一起构思了一个想法,借用他的思路捣鼓了一会,效果还行。

先上一段代码看看:

RectangleF newrec = UIScreen.MainScreen.Bounds;
UIWebView webView = new UIWebView(newrec);
NSUrl nsurl = new NSUrl("http://www.baidu.com");
webView.LoadRequest(new NSUrlRequest(nsurl));
webView.ShouldStartLoad = delegate(UIWebView v, NSUrlRequest r, UIWebViewNavigationType t) {
    if (t == UIWebViewNavigationType.LinkClicked) {
        Console.WriteLine(r.Url.ToString());
        this.NavigationController.PushViewController(new MainScreen(), true);

        return false;
    }
    return true;
};

this.View.Add(webView);


我想不用多说,后面这么搞你们懂的。

NSUrl fileUrl = NSUrl.FromFilename("index.html");

		NSUrlRequest req = new NSUrlRequest(fileUrl);
		this.KPIWebView.LoadRequest(req);
		this.KPIWebView.ShouldStartLoad = myHandler;


		this.KPIWebView.LoadFinished += delegate {
			indicator.StopAnimating ();
			this.KPIWebView.Hidden = false;
		};


		bool myHandler(UIWebView webView, NSUrlRequest request, UIWebViewNavigationType navType)
		{
			Console.WriteLine(request.Url.ToString());
			if(request.Url.ToString() == "about:blank")
			{return false;} // doesn't help to avoid loading the "about:blank"

			if(request.Url.ToString() == "ttl://data/salesGrowth/global")
			{
				string strData = Connection.Login("http://[yourIP/path]/salesGrowth/global");
				return false;               

				try{
					this.KPIWebView.EvaluateJavascript("Util.loadStoreData("+strData+")");
					return false;
				}
				catch(Exception ex)
				{ Console.WriteLine(ex.ToString()); }               
				return true;
			} 
		}

注意,文件Bulid Action方式是bundle resource

另外,UIWebView有一个EvaluateJavascript方法,它可以执行js串,而js可以做些什么呢,不用我多说,各位可以尽情发挥了。
ps,这样app都可以用pc端的页面来处理,mono就相当于一个架子了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值