UIWebView 和 WKWebView 导航
Posted
技术标签:
【中文标题】UIWebView 和 WKWebView 导航【英文标题】:UI WebView and WK WebView Navigation 【发布时间】:2017-06-29 10:55:33 【问题描述】:在我的应用程序中,我正在使用 WK WebView 打开一个 URL。 URL 加载正确,但如果我点击加载 URL 中的一些外部链接,它不会重定向到其他网站。
例如
以下是我的网址 https://www.urlaubstracker.de
在上面的链接中,不同的假期优惠链接到外部网站。如果我点击任何将用户重定向到另一个网站的按钮,应用程序将无法运行或加载 URL。
我尝试使用 UI WebView,它工作得非常好。有人可以指出我在 WK WebView 中究竟缺少什么。
【问题讨论】:
Http 在这里不是问题,就像我在 info.plist 中的应用程序一样,我已经做了“应用程序传输安全设置 - 允许任意加载为 YES”。 添加 NSExceptionAllowsInsecureHTTPLoads = YES 可能对你有帮助。检查我的回答***.com/a/44795602/3937664 【参考方案1】:尝试使用 WKNavigationDelegate
也切换到 SafariViewController
【讨论】:
【参考方案2】:首先,在您的应用中启用 ATS。
现在,请尝试使用此代码。
var webView: WKWebView?
override func viewDidLoad()
super.viewDidLoad()
let webViewConfiguration = WKWebViewConfiguration()
webView = WKWebView(frame: view.bounds, configuration: webViewConfiguration)
let url = URL(string: "https://www.urlaubstracker.de")
let req = NSURLRequest(url: url!)
self.webView!.load(req as URLRequest)
self.webView?.navigationDelegate = self
webView?.navigationDelegate = self
webView?.allowsBackForwardNavigationGestures = true
webView?.autoresizingMask = [.flexibleWidth, .flexibleHeight]
view.addSubview(webView!)
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction,
decisionHandler: (@escaping (WKNavigationActionPolicy) -> Void))
print("webView:\(webView) decidePolicyForNavigationAction:\(navigationAction) decisionHandler:\(decisionHandler)")
switch navigationAction.navigationType
case .linkActivated:
if navigationAction.targetFrame == nil
webView.load(navigationAction.request)
default:
break
decisionHandler(.allow)
【讨论】:
@Waleed Asif,我试过这样,它工作正常。 我完全使用了您的代码,但它不起作用。它正确加载了 URL,但是每当我单击应该打开另一个网站的链接时,什么都没有发生,这就是我的问题。使用 UI Webview 它的工作正常 bt 而不是我想使用的 WK Web 视图,因为它是 Apple 推荐的。你能帮帮我吗 你能帮我复制一下吗?我已经用 Webkit 加载了你的网站。现在,我应该点击哪里? 例如在这个 URL 中,urlaubstracker.de/italien-kalabrien-residence-san-leo 如果你尝试点击“flug”,Wk Webview 不会打开它(如果我使用 UI Webview,点击“flug”用户会被带到另一个网站)。 @waleed Asif,我已经更新了我的答案,请查看这个。以上是关于UIWebView 和 WKWebView 导航的主要内容,如果未能解决你的问题,请参考以下文章
iOS - UIWebView 被 WKWebView 取代,但对于 Apple 它仍然存在
在显示pdf时,是否可以在UIwebview中删除[“Page 1 of 20”视图]?
swift - UIWebView 和 WKWebView(iOS12 之后替换UIWebView)
iOS 和 H5 页面交互(WKWebview 和 UIWebview cookie 设置)