【问题标题】:How can I get the URL from webView in swift如何快速从 webView 获取 URL
【发布时间】:2017-04-18 05:35:56
【问题描述】:

我有一个问题,我如何从webView 获取网址? 我执行以下代码并得到nil

我正在尝试的代码:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(true)
    webView.loadRequest(URLRequest(url: URL(string: "https://www.youtube.com/watch?v=Vv2zJErQt84")!))
    if let text = webView.request?.url?.absoluteString{
         print(text)
    }
}

【问题讨论】:

    标签: swift uiwebview swift3 nsurl


    【解决方案1】:

    你没有得到 url 因为webView 没有完成请求的URL 的加载,你可以在UIWebviewDelegatewebViewDidFinishLoad 方法中得到那个URL。为此,您需要使用当前的ViewController 设置webView 的委托,并且需要实现UIWebviewDelegate

    webView.delegate = self
    

    现在您可以在webViewDidFinishLoad 方法中获取当前加载的URLwebView

    func webViewDidFinishLoad(_ webView: UIWebView) {
        if let text = webView.request?.url?.absoluteString{
             print(text)
        }
    }
    

    【讨论】:

    【解决方案2】:

    这是一个 Swift 3 版本,确保你在你的类 dseclaration 中添加了UIWebViewDelegate 并在viewDidload() 中设置了webView.delegate = self

    func webViewDidFinishLoad(_ webView: UIWebView) {
        UIApplication.shared.isNetworkActivityIndicatorVisible = false
    
        let urlString = webView.request!.url!.absoluteString
        print("MY WEBVIEW URL: \(urlString)")
    }
    

    【讨论】:

      【解决方案3】:

      对于 swift 4 和 swift 4.2 使用 let url = webView.url?.absoluteString :-

      首先导入WebKit:-

      import WebKit
      

      然后添加协议:-

      class ViewController: UIViewController, WKNavigationDelegate
      

      然后添加委托:-

          //MARK:- WKNavigationDelegate
      
      func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) {
          print(error.localizedDescription)
      }
      func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
          print("Strat to load")
      
          if let url = webView.url?.absoluteString{
              print("url = \(url)")
          }
      }
      func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
          print("finish to load")
      
          if let url = webView.url?.absoluteString{
              print("url = \(url)")
          }
      }
      

      【讨论】:

        【解决方案4】:

        仅供参考:

        如果您想查看哪个 url 正在导航加载,请使用此委托方法。 navigationAction 专门显示正在导航的页面。它可以与 webview.url

        不同
        func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
            super.webView(webView, decidePolicyFor: navigationAction, decisionHandler: decisionHandler)
            let request = navigationAction.request
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-08-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多