针对wkwebview不支持 window.open() js
2018-08-07 本文已影响4人
butterflyer
今天,搞的网站在别人的app上打开,发现所有的新打开页面全部失效,但是安卓的可以,于是自己搞了个demo试了下,在wkwebview上真的打不开。
于是搜了下原因,因为苹果的安全机制,所以wkwebview给禁掉了。
解决办法
遵循wkwebview代理,_webview.UIDelegate = self;
- (nullable 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;
NSLog(@"%ld",[urlPath rangeOfString:@"http://"].location);
if ([urlPath rangeOfString:@"https://"].location != NSNotFound || [urlPath rangeOfString:@"http://"].location != NSNotFound) {
// [[UIApplication sharedApplication] openURL:url];
[[UIApplication sharedApplication] openURL:url options:nil completionHandler:^(BOOL success) {
NSLog(@"success");
}];
}
}
return nil;
}
然后由于是客户集成我们的h5,所以最后还是我们这边处理,通过判断是否为移动端打开,
来选择打开方式。
export function isWebView(){
var ua = navigator.userAgent;
var webview = !!ua.match(/AppleWebKit.*Mobile.*/)
return webview;
}