如何禁用Mobile Safari中的电话号码链接?

ben*_*ado 352 iphone safari mobile-safari

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

小智 692

根据Safari HTML Reference,这似乎是正确的做法:

<meta name="format-detection" content="telephone=no">
Run Code Online (Sandbox Code Playgroud)

如果禁用此功能但仍需要电话链接,则仍可以使用"tel"URI方案.

这是Apple开发人员库的相关页面.

  • 4.2.1关于iPhone的工作原理; http://developer.apple.com/library/ios/#featuredarticles/iPhoneURLScheme_Reference/Articles/PhoneLinks.html (5认同)
  • 这可以根据具体情况适用吗?例如,页面上的1个数字字符串我不想被解释为电话号码,但是在我希望自动将其解释为电话号码的页面上保留6个其他人的行为? (4认同)
  • 这根本行不通。无论如何,不​​适用于 iOS 4.3.1 上的网络应用程序。 (2认同)
  • 只是想要注意这也适用于最新版本,例如我现在正在使用的5.1.1. (2认同)
  • 这在2019年的IOS 12下非常完美! (2认同)

Flo*_*ell 38

要禁用手机解析特定元素的外观,这个CSS似乎可以解决这个问题:

.element { pointer-events: none; }
.element > a { text-decoration:none; color:inherit; }
Run Code Online (Sandbox Code Playgroud)

第一个规则禁用单击,第二个规则负责样式.

  • 想要在非常特定的位置限制样式/格式的绝佳解决方案. (5认同)

小智 33

我遇到了同样的问题.我在UIWebView上找到了一个属性,允许您关闭数据检测器.

self.webView.dataDetectorTypes = UIDataDetectorTypeNone;
Run Code Online (Sandbox Code Playgroud)


sti*_*ser 31

我使用零宽度木匠 &zwj;

把它放在电话号码的某处,它对我有用.在BrowserStack中测试(和Litmus用于电子邮件).


Chu*_*uck 28

加上这个,我想这就是你要找的东西:

<meta name = "format-detection" content = "telephone=no">
Run Code Online (Sandbox Code Playgroud)


小智 10

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 ];
}

// ...
Run Code Online (Sandbox Code Playgroud)

来源:在PhoneGap-iOS中禁用电话检测.


yod*_*een 7

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

<a href="#"> 1234567 </a>
Run Code Online (Sandbox Code Playgroud)


Bob*_*ris 6

我想我找到了一个解决方案:将数字放在<label>元素中.没有尝试过任何其他标签,但<div>在主屏幕上将其保持活动状态,即使使用该telephone=no属性也是如此.

从早期的评论中可以明显看出,元标记确实有效,但由于某种原因,在iOS的后续版本中已经破解,至少在某些条件下.我正在运行4.0.1.


Ala*_* M. 6

我的经历和其他一些人提到的一样。元标签...

<meta name = "format-detection" content = "telephone=no">
Run Code Online (Sandbox Code Playgroud)

...当网站在 Mobile Safari(即使用 Chrome)中运行时可以工作,但在作为 Web 应用程序运行时停止工作(即保存到主屏幕并在没有 Chrome 的情况下运行)。

我不太理想的解决方案是将值插入输入字段......

<input type="text" readonly="readonly" style="border:none;" value="3105551212">
Run Code Online (Sandbox Code Playgroud)

这不太理想,因为尽管边框设置为无,iOS 仍会在字段上方呈现多像素灰色条。但是,这比将数字视为链接要好。


小智 6

您还可以将<a>标签javascript: void(0)用作href值.

示例如下:
<a href="javascript: void(0)">+44 456 77 89 87</a>


Jay*_*Jay 5

我自己对此进行了测试,发现它确实有效,尽管它肯定不是一个优雅的解决方案。在电话号码中插入空白范围将阻止数据检测器将其转换为链接。

(604) 555<span></span> -4321
Run Code Online (Sandbox Code Playgroud)

  • 这不是一个好的答案,因为您会故意生成错误的 HTML。 (2认同)