WKWebView的使用及加载html页面对_blank的处理

        iOS8 以后,苹果推出了一个新的加载网页显示的框架WebKit,它解决了在UIWebView上加载速度缓慢,占用内存大,优化困难等问题,在性能和稳定性上有了很大的提升,本文主要介绍WkWebView如何加载网页,并处理当html页面超链接里含有_blank时如何调用Safari浏览器打开该地址。

1.首先导入头文件 

#import

2.初始化及显示

#define kScreenWidth  [UIScreen mainScreen].bounds.size.width

#define kScreenHeight [UIScreen mainScreen].bounds.size.height

@property (nonatomic, strong)WKWebView *webView;

_webView = [[WKWebView alloc] initWithFrame:CGRectMake(0, 20, kScreenWidth, kScreenHeight - 20)];

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.163.com"]];

[self.webView loadRequest:request];

self.webView.navigationDelegate = self;//该代理可以用来追踪加载过程以及决定是否执行跳转。

self.webView.UIDelegate = self;

[self.view addSubview:self.webView];


3.理解 HTML 标签的target属性

_blank -- 在新窗口中打开链接

_parent -- 在父窗体中打开链接

_self -- 在当前窗体打开链接,此为默认值

_top -- 在当前窗体打开链接,并替换当前的整个窗体(框架页)

要想在新页面中打开超链接所指向的地址需要实现 - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler 这个代理方法

//接收到响应后,决定是否跳转

- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {

//this URL externally. If we´re doing nothing here, WKWebView will also just do nothing. Maybe this will change in a later stage of the iOS 8 Beta

参数 WKNavigationAction 中有两个属性:sourceFrame和targetFrame,分别代表这个action的出处和目标,类型是 WKFrameInfo 。WKFrameInfo有一个 mainFrame 的属性,标记frame是在主frame里显示还是新开一个frame显示

原文链接:http://www.jianshu.com/p/3a75d7348843

WKFrameInfo *frameInfo = navigationAction.targetFrame;

BOOL isMainframe =[frameInfo isMainFrame];

NSLog(@"isMainframe :%d",isMainframe);

if (!isMainframe) {//打开新页面显示

NSURL *url = navigationAction.request.URL;

UIApplication *app = [UIApplication sharedApplication];

if ([app canOpenURL:url]) {

[app openURL:url];

}

}

decisionHandler(WKNavigationActionPolicyAllow);

}


本文参考链接

http://www.jianshu.com/p/3a75d7348843

http://www.brighttj.com/ios/ios-wkwebview-new-features-and-use.html

http://www.jianshu.com/p/3a75d7348843

你可能感兴趣的:(WKWebView的使用及加载html页面对_blank的处理)