WKWebView函数,用于检测URL是否已更改
WKWebView类是否具有一个函数,可让您检测该WebView的URL是否已更改?
使用WebView中的某些元素时,didCommit
and 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中),并在看到更改时做您想要的事情。
以上是 WKWebView函数,用于检测URL是否已更改 的全部内容, 来源链接: utcz.com/qa/410951.html