美文网首页
WKWebView处理js打开新标签(新窗口)

WKWebView处理js打开新标签(新窗口)

作者: FateOfKing | 来源:发表于2019-10-16 09:45 被阅读0次

    在开发中我偏向使用WKWebView,因为他更加轻量级,有更好的性能。
    今天在做一个项目时发现,一个网页点击后没反应。
    PC浏览器是正常运行的,不过会打开新标签。也就是js中使用了window.open()代码。
    问题定位到,查看WKWebView的UIDelegate中的方法。
    发现- (nullable WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration *)configuration forNavigationAction:(WKNavigationAction *)navigationAction windowFeatures:(WKWindowFeatures *)windowFeatures符合要求,大概意思是创新新的webview会回调到这个方法里。
    最终处理代码如下,如果有新标签页就在当前webView网页打开相应链接。

    - (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;
            if ([urlPath rangeOfString:@"https://"].location != NSNotFound || [urlPath rangeOfString:@"http://"].location != NSNotFound) {
                
                [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:urlPath]]];
            }
        }
        
        return nil;
    }
    

    相关文章

      网友评论

          本文标题:WKWebView处理js打开新标签(新窗口)

          本文链接:https://www.haomeiwen.com/subject/tyrymctx.html