實現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