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

时间:2010-01-21 00:26:16

标签: iphone uiwebview

是否有人知道是否可以在UIWebView中为特定的HTML元素禁用电话号码,电子邮件地址等数据检测器?

我希望探测器对于加载到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>

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

5 个答案:

答案 0 :(得分:7)

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

希望有所帮助

答案 1 :(得分:6)

你可以把属性

x-apple-data-detectors="false"

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

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

在WKWebView中,在“属性”检查器中禁用所有数据检测器类型。这样可以解决您的问题

答案 4 :(得分:0)

由于将为您插入带有x-apple-data-detector的“ a”标签,因此您可以自己编写带有x-apple-data-detector设置为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>