加載URL
_hbqWebView = [[UIWebView alloc] initWithFrame:self.view.bounds];
_hbqWebView.delegate = self;
[_hbqWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.reibang.com/"]]];
[self.view addSubview:_hbqWebView];
不加載特定的URL
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
if ([request.URL isEqual:[NSURL URLWithString:@"http://www.reibang.com/"]]) {
NSLog(@"no");
return NO;
}
NSLog(@"yes");
return YES;
}
UIWebViewDelegate
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
- (void)webViewDidStartLoad:(UIWebView *)webView;
- (void)webViewDidFinishLoad:(UIWebView *)webView;
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
OC調(diào)用JavaScript
- stringByEvaluatingJavaScriptFromString:
- (void)webViewDidFinishLoad:(UIWebView *)webView {
NSLog(@"finish");
self.navigationItem.title = [_hbqWebView stringByEvaluatingJavaScriptFromString:@"document.title"];
}
- JavaScriptCore(iOS 7.0 +)
- (void)webViewDidFinishLoad:(UIWebView *)webView {
//獲取該UIWebView的javascript上下文
JSContext *jsContext = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
//在調(diào)用前,設(shè)置異程勾回調(diào)
[jsContext setExceptionHandler:^(JSContext *context, JSValue *exception){
NSLog(@"HBQ____%@", exception);
}];
//這也是一種獲取標(biāo)題的方法。
JSValue *value = [jsContext evaluateScript:@"document.titlexxxx"];
//更新標(biāo)題
self.navigationItem.title = value.toString;
}
JavaScript調(diào)用OC
- Custom URL Scheme(攔截URL)
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
//標(biāo)準(zhǔn)的URL包含scheme、host洞翩、port甩恼、path笛臣、query、fragment等
NSURL *URL = request.URL;
if ([URL.scheme isEqualToString:@"darkangel"]) {
if ([URL.host isEqualToString:@"smsLogin"]) {
NSLog(@"短信驗(yàn)證碼登錄涵妥,參數(shù)為 %@", URL.query);
return NO;
}
}
return YES;
}
·············