禁用 iOS WKWebView 中的日期操作

问题描述

我在 iOS 应用程序中使用 WKWebView 显示的页面上有一个时间段选择器 Web 组件。

iOS 识别出给定的文本是一个日期,并在您点击该日期时提供操作。

有什么办法可以禁用它吗?是通过更改 HTML 代码还是配置 iOS WKWebView 实例?

Actual image

HTML 代码:

<header class="cSlot-dates-selector svelte-kvfxh4">
    <div class="cSlot-day svelte-10whff3 today">
        <span class="cSlot-date-name svelte-10whff3">Thu</span> 
        <span class="cSlot-date-nb svelte-10whff3">29 Jul</span>
    </div>
    <div class="cSlot-day svelte-10whff3">
        <span class="cSlot-date-name svelte-10whff3">Fri</span>
        <span class="cSlot-date-nb svelte-10whff3">30 Jul</span>
   </div>
   //...
</header>

如果您按下一步,HTML 将更新并且该操作将不再出现。

解决方法

您可以使用以下 JavaScript 代码“覆盖”HTML 并禁用长按和链接触摸:

func webView(_ webView: WKWebView,didFinish navigation: WKNavigation!) {
    webView.evaluateJavaScript("document.documentElement.style.webkitUserSelect='none'")
    webView.evaluateJavaScript("document.documentElement.style.webkitTouchCallout='none'")
    webView.evaluateJavaScript("var elems = document.getElementsByTagName('a'); for (var i = 0; i < elems.length; i++) { elems[i]['href'] = 'javascript:(void)'; }")
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...