如何在swift中从webView获取URL

时间:2016-12-03 10:49:38

标签: swift uiwebview swift3 nsurl

我有疑问,如何从webView获取网址? 我执行以下代码,然后得到nil

Code I&m;尝试:

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)
    }
}

4 个答案:

答案 0 :(得分:11)

由于webView尚未完成对请求URL的加载,因此您无法获取网址,您可以使用URL webViewDidFinishLoad方法获取UIWebviewDelegate 。为此,您需要使用当前webView设置ViewController的委托,并需要实施UIWebviewDelegate

webView.delegate = self

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

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

答案 1 :(得分:2)

这是一个 Swift 3 版本,请确保您已在课程dseclaration中添加UIWebViewDelegate并在webView.delegate = self中设置viewDidload()

func webViewDidFinishLoad(_ webView: UIWebView) {
    UIApplication.shared.isNetworkActivityIndicatorVisible = false

    let urlString = webView.request!.url!.absoluteString
    print("MY WEBVIEW URL: \(urlString)")
}

答案 2 :(得分:2)

对于Swift 4和Swift 4.2,请使用SELECT * FROM yourTable WHERE Details::text LIKE '%"is_draft": "false"%'; :-

首先导入WebKit:-

let url = webView.url?.absoluteString

然后添加协议:-

import WebKit

然后添加代表:-

class ViewController: UIViewController, WKNavigationDelegate

答案 3 :(得分:0)

仅供参考:

如果要查看正在导航的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
}