由于iOS的WkWebview對(duì)window.open方法進(jìn)行了安全限制,即調(diào)用該方法,不會(huì)起到作用。
解放方法:當(dāng)觸發(fā)window.open方法時(shí),會(huì)觸發(fā)代理WKUIDelegate中的createWebViewWithConfiguration
- (nullable WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration *)configuration forNavigationAction:(WKNavigationAction *)navigationAction windowFeatures:(WKWindowFeatures *)windowFeatures;
然后,我們就可以在這個(gè)方法中進(jìn)行處理了。需要設(shè)置這個(gè)代理 webView.UIDelegate = self;
// 當(dāng)調(diào)用window.open方法時(shí),會(huì)掉用該代理方法
- (WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration *)configuration forNavigationAction:(WKNavigationAction *)navigationAction windowFeatures:(WKWindowFeatures *)windowFeatures{
if (navigationAction.request.URL) {
NSURL *url = navigationAction.request.URL;
NSString *urlPath = url.absoluteString;
if ([urlPath rangeOfString:@"https://"].location != NSNotFound || [urlPath rangeOfString:@"http://"].location != NSNotFound) {
[[UIApplication sharedApplication] openURL:url];
}
}
return nil;
}
參考:http://stackoverflow.com/questions/30603671/open-a-wkwebview-target-blank-link-in-safa