问题描述
我在 iOS 应用程序中使用 WKWebView 显示的页面上有一个时间段选择器 Web 组件。
iOS 识别出给定的文本是一个日期,并在您点击该日期时提供操作。
有什么办法可以禁用它吗?是通过更改 HTML 代码还是配置 iOS WKWebView 实例?
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)'; }")
}