WKWebView 中的跟踪导航不适用于按钮单击

Tracking navigation in WKWebView doesn't work for button click

我正试图在我的网络视图中捕获按钮点击。如果我可以这样说,按钮“动作”会触发某些 url...我真的无法通过 WKNavigationDelegate 捕捉到这一刻。 webview 是这样设置的:

 lazy var advertWebKitView: WKWebView = {
        let webConfiguration = WKWebViewConfiguration()
        let preferences = WKPreferences()
        preferences.javaScriptEnabled = true
        webConfiguration.preferences = preferences
        let webView = WKWebView(frame: .zero, configuration: webConfiguration)

        webView.navigationDelegate = self
        webView.uiDelegate = self
        webView.translatesAutoresizingMaskIntoConstraints = false
        return webView
    }()

我正在尝试像这样捕捉按钮点击:

 func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
        decisionHandler(.allow)
        guard let urlAsString = navigationAction.request.url?.absoluteString.lowercased() else {
            return
        }
        
        if urlAsString.range(of: "...") != nil {
           
        }
    }

但是单击按钮时不会触发此方法。

在 android 上,它的工作原理是这样的:

@Override
        public void doUpdateVisitedHistory(WebView view, String url, boolean isReload) {
            if (url.equals("...")) {
                finish();
            }
             //...
            super.doUpdateVisitedHistory(view, url, isReload);
        }

通过 wkwebview 正确跟踪导航的方法和方法是什么?

编辑: 如果需要有关网页结构的一些信息,请询问详细信息,我也会添加。我只是不知道哪些信息可能相关或有帮助。

按钮 html 如下所示:

<a class="lc-button lc-button--light" href="/close">OK</a>

还有一件有趣的事情是,我曾尝试在其他网站上使用我的代码,并且正确触发了导航委托方法。这让我觉得问题出在我们的网站及其 html 代码或有关单击按钮后页面加载方式的问题,也许...

我自己正在使用它并且它有效,它与您目前正在尝试的略有不同,但与 Android 方法相当。

 func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
        if let requestURL = navigationAction.request.url, requestURL.pathComponents.contains("...") {
//Do your things 
            decisionHandler(.cancel)
            return
        }
        decisionHandler(.allow)
    }

首先在viewDidLoad

设置委托
self.webView.navigationDelegate = self

您可以通过实施来了解按钮将您导航到的位置 WKNavigationDelegate 函数,didFinish navigation

extension YourViewController: WKNavigationDelegate{
    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        if let currentURL = webView.url{
            if self.urlString == currentURL.absoluteString{
                  print(self.urlString)
            }
        }
    }
}

在 React 路由器中使用 RedirectTo 而不是 LinkTo 重定向到 /close