当用户在 iPad 上的 WKWebView 中点击电话号码时如何禁用弹出窗口?

Posted

技术标签:

【中文标题】当用户在 iPad 上的 WKWebView 中点击电话号码时如何禁用弹出窗口?【英文标题】:How to disable popup when user taps phone number in WKWebView on iPad? 【发布时间】:2018-05-17 17:33:52 【问题描述】:

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

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

在 iPhone 上,我可以使用 WKNavigationDelegate 方法拦截对电话号码的窃听:

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

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

【问题讨论】:

【参考方案1】:

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

WKWebView 配置

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

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

html/JS

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

【讨论】:

以上是关于当用户在 iPad 上的 WKWebView 中点击电话号码时如何禁用弹出窗口?的主要内容,如果未能解决你的问题,请参考以下文章

Wikipedia 在 iPad 上以不同方式呈现 WkWebView 和 Safari

每次检测 WKWebView 何时完成加载

当用户触摸弹出框外部时,禁用 ipad 上的 ActionSheet 关闭

iOS WKWebView javascript警报在ipad上崩溃

如何使用 WKWebview 从 iPad 的 Document 目录加载 javascript 和 css 资源?

使用 WKWebView 在 iOS 13 中进行桌面浏览?