iOS收藏『ios』进阶

针对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;
  }
上一篇下一篇

猜你喜欢

热点阅读