swift - 如何知道 WKWebView 是否由于用户交互而重定向?

标签 swift redirect wkwebview

我正在使用 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/

相关文章:

ios - 保存用户在 AVCaptureVideoPreviewLayer 中看到的内容

html - 如何在 Swift 3 的字符串中表示 HTML 中的换行符

.htaccess - htaccess如何重定向所有页面,但不是根目录

apache - 使用 ,htaccess 将非 www 重定向到 www

xcode - UIDocumentPickerViewController 取消父 View Controller

iOS - WKWebView 跨源请求仅支持 HTTP

ios - 使用编程约束时如何将 CAGradientLayer 添加到 UIView

ios - 如何在 Swift 中显示/转换 oData weblink 到 UIImage?

apache - htaccess 中的 url 编码重定向

ios - 强制WKWebView显示移动版本