我正在使用 WKWebView,当用户执行导致 WKWebView 转到另一个 url 的操作(例如,单击 WKWebView 中的按钮导致另一个 url)时,我需要执行一些代码。我试图通过将工作网址与原始网址进行比较来做到这一点,但某些重定向不是由我的用户引起的,而是由网站本身引起的。有什么办法可以区分吗?这是我现在拥有的:
func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) {
print(webView.url?.absoluteString)
if webView.url?.absoluteString != self.workingReult {
//do something
}
}
谢谢
最佳答案
当然。这是我针对 Swift 4 的解决方案。
一旦为 WKWebView 设置了 navigationDelegate,您就可以实现以下函数,该函数会在 Web View 导航时随时调用:
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
if navigationAction.navigationType == .linkActivated {
//Tap on href link case
decisionHandler(WKNavigationActionPolicy.cancel)
} else {
//Any other case
decisionHandler(WKNavigationActionPolicy.allow)
}
}
如您所见,您可以使用navigationAction.navigationType获取导航操作的触发器。就我而言,我阻止用户导航链接,但您可以根据需要对其进行自定义。
请记住,在任何情况下都必须包含 DecisionHandler。
您可以检查其余的 WKNavigationType 常量案例 here
关于swift - 如何知道 WKWebView 是否由于用户交互而重定向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47587556/