diff --git a/Sources/AGWKWebViewController.swift b/Sources/AGWKWebViewController.swift index 20c306f2..f0fa0cdb 100644 --- a/Sources/AGWKWebViewController.swift +++ b/Sources/AGWKWebViewController.swift @@ -151,6 +151,16 @@ class AGWKWebViewController: UIViewController, WKNavigationDelegate { func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { if let navigationURL = navigationAction.request.url { + // Handle target="_blank" links + if (navigationAction.targetFrame == nil) { + if (UIApplication.shared.canOpenURL(navigationURL)) { + UIApplication.shared.open(navigationURL) { _ in + decisionHandler(.cancel) + } + return + } + } + // Handle redirect uri var parts = URLComponents(url: navigationURL, resolvingAgainstBaseURL: false) parts?.query = nil parts?.fragment = nil diff --git a/Sources/WKWebViewUIImplementation.swift b/Sources/WKWebViewUIImplementation.swift index 67fdcd7e..7d8b2d21 100644 --- a/Sources/WKWebViewUIImplementation.swift +++ b/Sources/WKWebViewUIImplementation.swift @@ -2,9 +2,9 @@ import Foundation import UIKit public class WKWebViewUIImplementation: NSObject, UIImplementation, AGWKWebViewControllerPresentationContextProviding { - public var modalPresentationStyle: UIModalPresentationStyle? = nil - public var navigationBarBackgroundColor: UIColor? = nil - public var navigationBarButtonTintColor: UIColor? = nil + public var modalPresentationStyle: UIModalPresentationStyle? + public var navigationBarBackgroundColor: UIColor? + public var navigationBarButtonTintColor: UIColor? public func openAuthorizationURL(url: URL, redirectURI: URL, shareCookiesWithDeviceBrowser: Bool, completion: @escaping CompletionHandler) { let controller = AGWKWebViewController(url: url, redirectURI: redirectURI) { url, error in