猿问

请问一下在WebApp中怎么使用JS调用iOS的函数?

在WebApp中怎么使用JS调用iOS的函数


守着星空守着你
浏览 463回答 4
4回答

临摹微笑

先看一下Web中,我们给h1标签添加一个onclick事件,让它在被点击之后,修改当前的url。Web中的HTML代码:<html><head><script>&nbsp;function&nbsp;getInfo(name){&nbsp;&nbsp;&nbsp;&nbsp;window.location&nbsp;=&nbsp;"/getInfo/"+name;}&nbsp;</script>&nbsp;</head>&nbsp;<body>&nbsp;&nbsp;&nbsp;&nbsp;<h1&nbsp;onclick="getInfo('why')">Name</h1></body>&nbsp;</html>&nbsp;iOS中,先拖拽WebView,访问localhost,然后通过WebView的委托事件监听url跳转操作,并且把跳转截取下来。也就是说,在onclick的时候,普通浏览器灰跳转到那个url,但是在iOS的这个WebView里面,这个跳转会被拦截,用这种方式可以巧妙地实现JS调用iOS的原生代码:&nbsp;////&nbsp;&nbsp;DWViewController.m//&nbsp;&nbsp;DareWayApp////&nbsp;&nbsp;Created&nbsp;by&nbsp;why&nbsp;on&nbsp;14-6-3.//&nbsp;&nbsp;Copyright&nbsp;(c)&nbsp;2014年&nbsp;DareWay.&nbsp;All&nbsp;rights&nbsp;reserved.//&nbsp;#import&nbsp;"DWViewController.h"&nbsp;@interface&nbsp;DWViewController&nbsp;()&nbsp;@property&nbsp;(weak,&nbsp;nonatomic)&nbsp;IBOutlet&nbsp;UIWebView&nbsp;*myWebview;&nbsp;&nbsp;//&nbsp;主页面&nbsp;@end&nbsp;@implementation&nbsp;DWViewController&nbsp;-&nbsp;(void)viewDidLoad{&nbsp;&nbsp;&nbsp;&nbsp;[super&nbsp;viewDidLoad];&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Do&nbsp;any&nbsp;additional&nbsp;setup&nbsp;after&nbsp;loading&nbsp;the&nbsp;view,&nbsp;typically&nbsp;from&nbsp;a&nbsp;nib.&nbsp;//&nbsp;适配iOS6的状态栏&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;([[[UIDevice&nbsp;currentDevice]&nbsp;systemVersion]&nbsp;floatValue]&nbsp;>=&nbsp;7)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_myWebview.frame&nbsp;=&nbsp;&nbsp;CGRectMake(0,20,self.view.frame.size.width,self.view.frame.size.height-20);&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;//&nbsp;加载制定的URL&nbsp;&nbsp;&nbsp;&nbsp;NSURL&nbsp;*url&nbsp;=[NSURL&nbsp;URLWithString:@"http://localhost"];&nbsp;&nbsp;&nbsp;&nbsp;NSURLRequest&nbsp;*request&nbsp;=[NSURLRequest&nbsp;requestWithURL:url];&nbsp;&nbsp;&nbsp;&nbsp;[_myWebview&nbsp;setDelegate:self];&nbsp;&nbsp;&nbsp;&nbsp;[_myWebview&nbsp;loadRequest:request];&nbsp;}&nbsp;//&nbsp;网页中的每一个请求都会被触发-(BOOL)webView:(UIWebView&nbsp;*)webView&nbsp;shouldStartLoadWithRequest:(NSURLRequest&nbsp;*)request&nbsp;navigationType:(UIWebViewNavigationType)navigationType{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;每次跳转时候判断URL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if([request.mainDocumentURL.relativePath&nbsp;isEqualToString:@"/getInfo/why"])&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NSLog(@"why");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;NO;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;return&nbsp;YES;}&nbsp;-&nbsp;(void)didReceiveMemoryWarning{&nbsp;&nbsp;&nbsp;&nbsp;[super&nbsp;didReceiveMemoryWarning];&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Dispose&nbsp;of&nbsp;any&nbsp;resources&nbsp;that&nbsp;can&nbsp;be&nbsp;recreated.}

萧十郎

先看一下Web中,我们给h1标签添加一个onclick事件,让它在被点击之后,修改当前的url。Web中的HTML代码:<html><head><script>function getInfo(name){window.location = "/getInfo/"+name;}</script></head><body><h1 onclick="getInfo('why')">Name</h1></body></html>
随时随地看视频慕课网APP

相关分类

iOS
我要回答