检测 WKWebView 何时完成加载
Posted
技术标签:
【中文标题】检测 WKWebView 何时完成加载【英文标题】:Detect when WKWebView is finished loading 【发布时间】:2017-03-14 21:38:55 【问题描述】:如何检测我的WKWebView
何时完成加载,以便我可以从中获取 URL,例如使用委托方法?
我为WKWebView
实现了委托方法,但我无法检测到它何时完成加载视频。
import UIKit
import WebKit
class ViewController: UIViewController, WKUIDelegate, WKNavigationDelegate
var webView: WKWebView!
override func viewDidLoad()
super.viewDidLoad()
let preference = WKPreferences()
preference.javascriptEnabled = true
let configuration = WKWebViewConfiguration()
configuration.preferences = preference
webView = WKWebView(frame: view.bounds, configuration: configuration)
view.addSubview(webView)
webView.uiDelegate = self
webView.navigationDelegate = self
webView.load(URLRequest(url: URL(string: "http://www.youtube.com")!))
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!)
print("finish loading video")
但是当它完成从 YouTube 加载视频时,并没有调用上面的方法。
非常感谢。
【问题讨论】:
试试这个解决方案:***.com/a/40730365/4488252 【参考方案1】:SWIFT 4:
使用以下 WKNavigationDelegate 的委托方法。您可以在哪里检查是否已完成加载?在这里您可以在 webView 中加载 URL。
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!)
let url = webView.url?.absoluteString
print("---Hitted URL--->\(url!)") // here you are getting URL
【讨论】:
我认为这个方法必须用于开始加载检测。最后:func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) 您使用的委托方法在 webView“开始”接收内容时调用,而不是在其完成加载时调用。正确使用的委托方法是“webView(_ webView: WKWebView, didFinish navigation: WKNavigation!)”以上是关于检测 WKWebView 何时完成加载的主要内容,如果未能解决你的问题,请参考以下文章
检测用户何时点击加载在 UIWebView 或 WKWebView 中的 web 表单
如何检测 amp 页面的 url 何时随 WKWebview 更改
检测用户何时向左或向右滑动以在 WKWebView 上前后移动