WKWebView函数,用于检测URL是否已更改

WKWebView类是否具有一个函数,可让您检测该WebView的URL是否已更改?

使用WebView中的某些元素时,didCommitand 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

回到顶部