如何在用户点击 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()
或其他东西。
当用户点击 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()
或其他东西。