【发布时间】:2020-11-21 08:39:44
【问题描述】:
我试图在我的 web 视图中捕捉按钮点击。如果我可以这样说,按钮“动作”会触发某些 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 代码或单击按钮后页面如何加载的问题上,也许......
【问题讨论】:
-
这能回答你的问题吗? How to detect a click event in a UIWebView
-
@KirilS。它没有帮助导致它关于 UIWebView,而不是 WKWebView。
-
请在 Web UI 中显示按钮的代码及其操作。
-
@SanthoshR 目前我只有按钮 html 代码。我想帮助不大,但如果需要更多信息,关于他们在 FE 上使用了什么技术,以及如何重新加载/加载页面,我可以在明天为您提供。
-
您是否尝试将
decisionHandler(.allow)移动到函数末尾?也许也可以尝试使用委托函数func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!)
标签: ios swift wkwebview swift5