现在的位置: 首页 > 综合 > 正文

mono touch中WebView与html之间的交互

2014年06月24日 ⁄ 综合 ⁄ 共 1446字 ⁄ 字号 评论关闭

有不明白的地方欢迎入群 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;
			} 
		}

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

抱歉!评论已关闭.