WebView调用Javascript方法

来源:互联网 发布:淘宝网运动鞋 编辑:程序博客网 时间:2024/05/16 17:42

正文:

1.       Objective-C调用Javascript方法:

前提:

UIWebView已经完全加载完成包含需要调用的页面

方法:

假设某视图对象的子视图属性self.webview加载的页面包含如下Javascript函数:

function getString(){ return “Hello javascript!”;}

并且该函数在该页面上可被正常调用,则可以通过形如下面的Objectvie-C方法调用此函数:

NSString *str = [self.webview stringByEvaluatingJavaScriptFromString:@"getString();"];


2.       系统响应页面Javascript代码:

前提:

       需要实现

- (BOOL)webView:(UIWebView *)webView

shouldStartLoadWithRequest:(NSURLRequest *)request

navigationType:(UIWebViewNavigationType)navigationType;

return NO  表示不响应点击的页面跳转


监视页面上的特定格式的跳转地址加以拦截,并执行相应的本地代码,即可实现Javascript与Objective-C代码的交互。

       例如,规定拦截URL地址前缀为”objc:”的所有地址,并且用if…else…语句判定本地需要执行的代码,则实现形如以下格式的Objective-C托管函数:

- (BOOL)webView:(UIWebView *)webView

shouldStartLoadWithRequest:(NSURLRequest *)request

navigationType:(UIWebViewNavigationType)navigationType

{

NSString *urlString = [[request URL] absoluteString];

       NSArray *urlComps = [urlString componentsSeparatedByString:@":"];

       if([urlComps count] && [[urlComps objectAtIndex:o] isEqualToString:@"objc"])

       {

              NSString *funcStr = [urlComps objectAtIndex:1];

              if([funcStr isEqualToString:@"doFunc1"])

              {

                     /*调用本地函数1*/

              }

              else if([funcStr isEqualToString:@"doFunc2"])

              {

                     /*调用本地函数2*/

              }

              return NO;

       }

       return YES;

}

当需要调用本地函数1时,可以通过如下Javascript函数进行:

       window.location.href=”objc:doFunc1”;

根据上述思路,可以完善通过Javascript调用本地带参数的Objective-C代码。



原创粉丝点击