如何从 swift 中的 webView 获取 URL
How can I get the URL from webView in swift
我有问题,如何从 webView
中获取 url?
我执行以下代码并得到 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)
}
}
你没有得到 url 因为 webView
还没有完成请求的 URL
的加载,你可以在 webViewDidFinishLoad
方法中得到那个 URL
UIWebviewDelegate
个。为此,您需要使用当前的 ViewController
设置 webView
的委托,并且需要实施 UIWebviewDelegate
.
webView.delegate = self
现在您可以在 webViewDidFinishLoad
方法中获取 webView
的当前加载 URL
。
func webViewDidFinishLoad(_ webView: UIWebView) {
if let text = webView.request?.url?.absoluteString{
print(text)
}
}
这是一个 Swift 3 版本,请确保您已在 class 声明中添加 UIWebViewDelegate
并设置 webView.delegate = self
在 viewDidload()
:
func webViewDidFinishLoad(_ webView: UIWebView) {
UIApplication.shared.isNetworkActivityIndicatorVisible = false
let urlString = webView.request!.url!.absoluteString
print("MY WEBVIEW URL: \(urlString)")
}
对于 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)")
}
}
仅供参考:
如果您想查看哪个 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
}
我有问题,如何从 webView
中获取 url?
我执行以下代码并得到 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)
}
}
你没有得到 url 因为 webView
还没有完成请求的 URL
的加载,你可以在 webViewDidFinishLoad
方法中得到那个 URL
UIWebviewDelegate
个。为此,您需要使用当前的 ViewController
设置 webView
的委托,并且需要实施 UIWebviewDelegate
.
webView.delegate = self
现在您可以在 webViewDidFinishLoad
方法中获取 webView
的当前加载 URL
。
func webViewDidFinishLoad(_ webView: UIWebView) {
if let text = webView.request?.url?.absoluteString{
print(text)
}
}
这是一个 Swift 3 版本,请确保您已在 class 声明中添加 UIWebViewDelegate
并设置 webView.delegate = self
在 viewDidload()
:
func webViewDidFinishLoad(_ webView: UIWebView) {
UIApplication.shared.isNetworkActivityIndicatorVisible = false
let urlString = webView.request!.url!.absoluteString
print("MY WEBVIEW URL: \(urlString)")
}
对于 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)")
}
}
仅供参考:
如果您想查看哪个 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
}