如何在用户点击 iPad 上的 WKWebView 中的 phone 数字时禁用弹出窗口?

How to disable popup when user taps phone number in WKWebView on iPad?

当用户点击 WKWebView 中的 phone 号码时,出现弹出窗口:

如何拦截此类点击并执行自定义操作?

在 iPhone 上,我可以使用 WKNavigationDelegate 方法拦截对 phone 数字的点击:

public func webView(_ webView: WKWebView,
                    decidePolicyFor navigationAction: WKNavigationAction,
                    decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
    //....
    decisionHandler(.allow)
}

但是在 iPad 上弹出窗口只是出现并且没有调用委托方法。

我可以想象出几种方法,虽然我现在没有机会尝试它们。

WKWebViewConfiguration

  • dataDetectorTypes 等属性设置为 .none,尽管这应该是默认设置。

  • 使用setURLSchemeHandler(_:forURLScheme:)忽略tel://方案

HTML/JS

  • 通过抓取
  • 显示 HTML 之前删除有问题的 link 标签
  • 应用一些 Javascript 来捕获事件并使用 preventDefault() 或其他东西。