繁体   English   中英

禁用 UIWebView 中特定 HTML 元素的数据检测器

[英]Disabling data detectors for a specific HTML element in a UIWebView

有谁知道是否可以仅针对特定的 HTML 元素禁用 UIWebView 中电话号码、电子邮件地址等的数据检测器?

我希望检测器对于加载到 UIWebView 的大部分内容都处于活动状态,但在某些区域禁用它。

如果这是可能的,我假设它可以通过在加载的内容中使用 HTML 属性来实现(而不是设置某种 UIWebView 属性),例如

<html>
  <body>
    <h1 datadetectors="off">Header text with number 9123 3456</h1>
    <p>Body text with number 9872 4567</p>
  </body>
</html>

在此示例中,由于设置webview.dataDetectorTypes = UIDataDetectorTypeAll , <p> 中的数字将被检测为电话号码,而 <h1> 中的数字则不会。

你应该使用<meta name = "format-detection" content = "telephone=no">

希望能帮助到你

你可以把属性

x-apple-data-detectors="false"

但不幸的是,这似乎只适用于标签。 我最终使用了这个解决方案:

<a href="#" x-apple-data-detectors="false">666-777-777</a>

除了禁用电话号码“检测”之外,这还可以防止地址和其他检测运行。

如果您控制 Web 内容,您可以使用 jscript(通过 jquery)编写您自己的数据检测器。 如果您不控制内容,您可以使用 stringByEvaluatingJavaScriptFromString: 一旦 webViewDidFinishLoad: 被调用插入和执行 jscript。

在 WKWebView 中禁用属性检查器中的所有数据检测器类型。 这将解决您的问题

由于将为您插入带有 x-apple-data-detectors 的“a”标签,您可以自己编写标签,并将 x-apple-data-detectors 设置为 false。

原始代码:

<div class="my_time">17:02</div>

将转化为:

<div class="my_time">
<a href="x-apple-data-detectors://1" dir="ltr" 
   x-apple-data-detectors="true" 
   x-apple-data-detectors-type="calendar-event" 
   x-apple-data-detectors-result="1" 
   style="color: rgb(169, 169, 169); 
   text-decoration-color: rgba(169, 169, 169, 0.258824);">14:18
</a>
</div>

您可以通过编写如下代码来防止这种情况...

<div class="my_time">
  <a x-apple-data-detectors="false" style="text-decoration: none">17:02</a> 
</div>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM