实现WebView代理方法
//网页加载完时调用
-(void)webViewDidFinishLoad:(UIWebView *)webView{
//1.操作网页中的参数
[self domHtml:webView];
// 2.在iOS中加载HTML
[self iOSforHtml:webView];
}
//是否允许加载请求(拦截网址)
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
//3.访问相册
[self Visitphoto:request];
//4.得到网页中的参数
[self getHtmlCont:request];
return YES;
}
操作网页中的参数(OC->JS)
OC提交JS请求.运行JS方法
====================Html代码====================
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<p id="word">这是标题/p>
<ul>
<li class="change">你好</li>
<li>我好</li>
<li>大家好</li>
<li>才是真的好</li>
</ul>
</body>
</html>
====================OC代码======================
-(void)domHtml:(UIWebView *)webView{
// 删除
NSString *str1 = @"var word = document.getElementById('word');";
NSString *str2 = @"word.remove();";
//操作JavaScript
[webView stringByEvaluatingJavaScriptFromString:str1];
[webView stringByEvaluatingJavaScriptFromString:str2];
// 更改
NSString *str3 = @"var change = document.getElementsByClassName('change')[0];"
"change.innerHTML = '好你的哦!';";
[webView stringByEvaluatingJavaScriptFromString:str3];
// 插入
NSString *str4 =@"var img = document.createElement('img');"
"img.src = 'img_01.jpg';"
"img.width = '160';"
"img.height = '80';"
"document.body.appendChiJavaScriptld(img);";
[webView stringByEvaluatingJavaScriptFromString:str4];
}
2.在iOS中加载HTML(OC->JS)---修改他人网页
-(void)iOSforHtml:(UIWebView *)webView{
// 改变标题
NSString *str1 = @"var h1 = document.getElementsByTagName('h1')[0];"
"h1.innerHTML='CY鲜花网';";
[webView stringByEvaluatingJavaScriptFromString:str1];
//删除尾部
NSString *str2 =@"document.getElementById('footer').remove();";
[webView stringByEvaluatingJavaScriptFromString:str2];
// 让scrollView显示
self.wbView.scrollView.hidden = NO;
self.activityView.hidden = YES;
// 拿出所有的网页内容
NSString *str3 = @"document.body.outerHTML";
NSString *html = [webView stringByEvaluatingJavaScriptFromString:str3];
NSLog(@"%@", html);
}
HTML访问相册(JS->OC)
JS提交请求到OC
====================Html代码====================
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<button οnclick="getImage();">访问相册</button>
<script>
function getImage(){
window.location.href = 'xmg://getImage';
}
</script>
</body>
</html>
====================OC代码====================
-(void)Visitphoto:(NSURLRequest *)request{
//截取请求
NSString *str=request.URL.absoluteString;
NSRange range=[str rangeOfString:@"xmg://"];
if (range.location!=NSNotFound) {
NSString *method=[str substringFromIndex:range.location+range.length];
SEL sel=NSSelectorFromString(method);
[self performSelector:sel];
}
}
-(void)getImage{
UIImagePickerController *imgVc=[[UIImagePickerController alloc]init];
imgVc.sourceType=UIImagePickerControllerSourceTypePhotoLibrary;
[self presentViewController:imgVc animated:YES completion:nil];
}
得到html中的参数(JS->OC)
====================Html代码====================
<html>
<head>
<meta charset="UTF-8">
<style>
body{
margin:20px;
}
</style>
</head>
<body>
<p></p>
<span>用户名</span>
<input id="username">
<p></p>
<span>密码</span>
<input id="pwd" type="password">
<p></p>
<button id="btn">登录</button>
<script>
var username = document.getElementById('username');
var pwd = document.getElementById('pwd');
var btn = document.getElementById('btn');
btn.onclick = function(){
var name = username.value; // 拿到用户名
var password = pwd.value;
//定义协议
window.location.href = 'xmg://' + name + '?' + password;
}
</script>
</body>
</html>
====================OC代码====================
-(void)getHtmlCont:(NSURLRequest *)request{
//Html中自定义协议:window.location.href = 'xmg://' + name + '?' + password;
//OC中通过截取字符串得到Html中相应的参数。
//截取请求
NSString *str=request.URL.absoluteString;
NSRange range=[str rangeOfString:@"xmg://"];
if (range.location!=NSNotFound) {
NSString *method=[str substringFromIndex:range.location+range.length];
NSLog(@"======[%@]",method);
}
}
方法:
iOS开发,UIWebview与H5之间的交互
http://www.unjeep.com/q/841949662.htm