iPhone上的Safari会自动为出现在电话号码中的数字字符串创建链接。我正在编写一个包含IP地址的网页,Safari将其转换为电话号码链接。是否可以为整个页面或页面上的某个元素禁用此行为?


当前回答

要在页面的某些部分禁用电话号码检测,请使用href="#"将受影响的文本包装在锚定标记中。如果你这样做,移动Safari和UIWebView应该不去管它。

<a href="#"> 1234567 </a>

其他回答

添加元标记来关闭格式检测对我来说不起作用。我试图在<p>标签和其他文本中显示缩放会议ID, iOS将该ID转换为电话链接。此外,我通过一个[href^="tel:"]定位电话链接,以便给他们自定义样式,因此禁用电话链接上的样式不是一个选项。

我找到的解决方案是将ID号包装在<code>标记中。这似乎可以防止iOS干扰它。

Webview解决方案!

对于PhoneGap-iPhone / PhoneGap-iOS应用程序,您可以通过在项目的应用程序委托中添加以下内容来禁用电话号码检测:

// ...

- (void)webViewDidStartLoad:(UIWebView *)theWebView 
{
    // disable telephone detection, basically <meta name="format-detection" content="telephone=no" />
    theWebView.dataDetectorTypes = UIDataDetectorTypeAll ^ UIDataDetectorTypePhoneNumber;

    return [ super webViewDidStartLoad:theWebView ];
}

// ...

来源:禁用PhoneGap-iOS中的电话检测。

我使用的一个不仅适用于Mobile Safari的技巧是使用HTML转义码和在电话号码中添加一点标记。这使得浏览器更难“识别”一个电话号码。

Phone: 1-8&#48;&#48;<span>-</span>62&#48;<span>-</span>38&#48;3

我想我已经找到了一个解决方案:把数字放在<label>元素内。没有尝试任何其他标记,但是<div>使它在主屏幕上处于活动状态,即使有电话=no属性。

从之前的评论中可以明显看出,元标签确实起作用了,但由于某种原因,在iOS的后续版本中,至少在某些条件下,它已经失效了。我运行的是4.0.1。

有一段时间我真的很困惑,但最终明白了。我们对网站进行了更新,有些数字转换为链接,有些则没有。事实证明,如果数字在<fieldset>中,它们将不会被转换为链接。显然不是大多数情况下的正确解决方案,但在某些情况下是正确的。