iOS webView js和Objective c交互

来源:互联网 发布:网络名词流行用语解释 编辑:程序博客网 时间:2024/06/05 07:52

常见问题, 使用webView时, 常常需要调用Objective c的方法。

两种方式可以完成需求, 简单记录方便日后常看。

第一种是网页js调用方法loadURL();

例如:

网页端:

loadURL("myWebView://callfunc?param1=1&param2=2.......");

iOS端:webView代理

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{    NSString *url = [[request URL].absoluteString stringByRemovingPercentEncoding];    NSLog(@"%@", url);    if ([url hasPrefix:@"myWebView:"]) {        //调用网页,弹出窗口        [webView stringByEvaluatingJavaScriptFromString:@"alert(1);"];    }    return YES;}

第二种方法

在iOS代码处获取javaScriptContext, 得到上下文。
具体代码:
iOS端:webView代理
- (void)webViewDidFinishLoad:(UIWebView *)webView{    JSContext *context = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];    context[@"test1"] =  ^ NSString *() {        NSArray *args = [JSContext currentArguments];        for (id obj in args) {            NSLog(@"%@",obj);        }        return @"123";    };    }

此处, 申明一个方法名为test1的方法。
网页端, js直接调用普通方法一样,直接调用即可。



0 0
原创粉丝点击