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 设置)

在 iOS 9 中遇到 WKWebview 和 UIWebView 问题

iOS WKWebView 从点获取 RGBA 像素颜色