有時(shí)候iOS開發(fā)過程中使用 UIWebView 經(jīng)常需要加載網(wǎng)頁,但是網(wǎng)頁中有很多明顯的標(biāo)記讓人一眼就能看出來是加載的網(wǎng)頁,而我們又不想被人卡出來。
如網(wǎng)頁中的這個(gè)導(dǎo)航

Snip20170704_1.png
通常我們不需要WebView中的 導(dǎo)航欄,也不需要里面的返回上一級的交互。。
對WebView常用的另外一種功能就是對某個(gè)點(diǎn)擊添加對用function實(shí)現(xiàn)JS調(diào)用OC的交互功能。
下面一一介紹:
1. UIWebView 調(diào)用JS代碼
OC調(diào)用JS通常是,在webView加載完成后調(diào)用,直接實(shí)現(xiàn)WebView代理方法
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
// webView
// 執(zhí)行JS代碼實(shí)現(xiàn)--這里移除頭部,只是進(jìn)來的時(shí)候移除一次,
NSString *jsCode = @"var headerElement = document.getElementsByTagName('header')[0];"
"headerElement.parentNode.removeChild(headerElement);";
[webView stringByEvaluatingJavaScriptFromString:jsCode];
}
2. JS 調(diào)用 OC 方法
此種用法通常是WebView中某按鈕點(diǎn)擊要進(jìn)入下一級頁面或其他操作。此時(shí)需要實(shí)現(xiàn)兩個(gè)WebView的代理方法配合實(shí)現(xiàn)。
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
// webView
NSString *exeCode =
//找到對應(yīng)的元素
@"var figureElement = document.getElementsByTagName('div')[0];"
// "var imgElement = figureElement.children[0];"
//添加相應(yīng)事件(這里是點(diǎn)擊事件)
"figureElement.onclick = function(){window.location.;
[webView stringByEvaluatingJavaScriptFromString:exeCode];
self.request = webView.request;
}
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
if ([request.URL.absoluteString isEqualToString:@"http://www.baidu.com/"]) {
UIAlertView *a = [[UIAlertView alloc] initWithTitle:@"提示" message:@"政策原因,請移步網(wǎng)站投注" delegate:self cancelButtonTitle:@"好的" otherButtonTitles:nil, nil];
[a show];
return NO;
}
return YES;
}