WKWebView 打开新标签(新窗口),无反应
今天在做一个项目时发现,一个网页点击跳转到m站,没反应。
PC浏览器是正常运行的,不过会打开新标签。也就是js中使用了window.open()代码。
问题定位到,查看WKWebView的UIDelegate中的方法。
发现- (nullable WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration *)configuration forNavigationAction:(WKNavigationAction *)navigationAction windowFeatures:(WKWindowFeatures *)windowFeatures符合要求,大概意思是创新新的webview会回调到这个方法里。
#pragma mark WKUIDelegate
- (WKWebView*)webView:(WKWebView*)webView
createWebViewWithConfiguration:(WKWebViewConfiguration*)configuration
forNavigationAction:(WKNavigationAction*)navigationAction
windowFeatures:(WKWindowFeatures*)windowFeatures {
if (!navigationAction.targetFrame.isMainFrame) {
[webView loadRequest:navigationAction.request];
}
return nil;
}
webview.UIDelegate = self;