WKWebView类是否具有一个函数,可让您检测该WebView的URL是否已更改?
使用WebView中的某些元素时,didCommitand didStartProvisionalNavigation函数似乎并不总是会触发。
didCommit
didStartProvisionalNavigation
编辑: 尝试添加一个通知观察器。到目前为止,这是我所拥有的:
extension Notification.Name { static let checkURL = Notification.Name("checkURL") } NotificationCenter.default.post(name: .checkURL, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(getter: webView.url), name: .checkURL, object: webView.url)
您是什么意思,他们似乎并不总是会开除?什么样的元素?他们必须为了WkWebView起作用。
该URL试图更改的第一个迹象是在:DecisionPolicyForNavigationAction
- (void) webView: (WKWebView *) webView decidePolicyForNavigationAction: (WKNavigationAction *) navigationAction decisionHandler: (void (^)(WKNavigationActionPolicy)) decisionHandler { NSLog(@"%s", __PRETTY_FUNCTION__); decisionHandler(WKNavigationActionPolicyAllow); //Always allow NSURL *u1 = webView.URL; NSURL *u2 = navigationAction.request.URL; //If changing URLs this one will be different }
在您到达时:didStartProvisionalNavigation它已更改。
- (void) webView: (WKWebView *) webView didStartProvisionalNavigation: (WKNavigation *) navigation { NSLog(@"%s", __PRETTY_FUNCTION__); NSURL *u1 = webView.URL; //By this time it's changed }
您要做的就是实现这些委托方法(在Swift中),并在看到更改时做您想要的事情。