一: OC执行JS代码
1.webView加载请求, request, 控制器成为webView的代理, 监听网页加载完毕会调用代理方法
/**
* 网页加载完毕
*/
- (void)webViewDidFinishLoad:(UIWebView *)webView { }
2.让页面调用OC的方法, 它属于webView的方法,注意: 执行JS代码仅仅只有这一种方法:
[webView stringByEvaluatingJavaScriptFromString:@“JS代码”];
举例 一:
/**
* 网页加载完毕
*/
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
NSString *js = @"document.getElementsByTagName('footer')[0].remove();";
[webView stringByEvaluatingJavaScriptFromString:js];
}
举例 二:
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
NSString *JS代码 = @"function login (username, pwd) { "
" return 10;"
" }"
" login();";
// 在OC中调用JS的函数(执行JS代码)
[webView stringByEvaluatingJavaScriptFromString:@“JS代码”];
}
二: JS调用OC代码, JS调用OC中的方法
1.需要自定义href协议, 可以指定方法名和参数: 然后将OC方法和参数值拼接在一个URL中
/* 通用url的设计
1> 协议固定: hm:
2> 一般有2个参数 2.1> 方法名 2.2> 方法参数
*/
window.location.href = 'hm:saveImageToAblum:&' + this.src
2.使用 <UIWebViewDelegate>代理方法拦截请求, 每发送请求之前系统会自动调用该代理方法:
/**
调用 : 每当webView发送一个请求之前都会先调用这个方法
request : 即将发送的请求
BOOL : Yes : 允许发送这个请求 No : 禁止发送这个请求
navigationType : 是否在新窗口中打开
*/
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
// a) 在这个代理方法中拦截JS请求的URL
// b) 从URL中截取相应的方法名和参数
// c) 调用方法,传递参数
return YES/NO;
}