在iPhone上查看电话号码时,是否有办法删除默认的蓝色超链接颜色?像一个特定的移动Safari标签或CSS添加?

我只在数字的地方有这个:

<p id="phone-text">Call us on <strong>+44 (0)20 7194 8000</strong></p>

这里没有超链接,但iPhone仍然将这个文本数字显示为超链接。我在我的一些网站上有这个渲染问题,但不明白为什么会发生这种情况。

我确实读过这篇文章:

移动HTML渲染数字

但这是唯一可行的解决方案吗?


当前回答

<meta name="format-detection" content="telephone=no">。这个metatag可以在iOS设备上的默认Safari浏览器中工作,并且只适用于没有被包裹在电话链接中的电话号码

1-800-123-4567
<a href="tel:18001234567">1-800-123-4567</a>

如果指定了元标签,第一行将不会被格式化为链接,但第二行会,因为它被包装在电话锚中。


您可以完全放弃元标记,而使用mixin,例如

a[href^=tel]{
    color:inherit;
    text-decoration:inherit;
    font-size:inherit;
    font-style:inherit;
    font-weight:inherit;
}

为了保持您的电话号码的预期样式,但您必须确保将它们包装在电话锚中。

如果您希望格外谨慎,防止出现没有使用包装锚标记正确格式化的电话号码,则可以钻取DOM并使用此脚本进行调整。根据需要调整替换模式。

$('body').html($('body').html().replace(/^\D?(\d{3})\D?\D?(\d{3})\D?(\d{4})/g, '<a href="tel:+1$1$2$3">($1) $2-$3</a>'));

或者没有jQuery更好

document.body.innerHTML = document.body.innerHTML.replace(/^\D?(\d{3})\D?\D?(\d{3})\D?(\d{4})/g,'<a href="tel:+1$1$2$3">($1) $2-$3</a>');

其他回答

如果你只是想避免电话号码作为链接,可以使用字体标签:

<p>800<font>-</font>555<font>-<font>1212</p>

将数字放在<fieldset>中将阻止iOS出于某些原因将数字转换为链接。在某些情况下,这可能是正确的解决方案。我并不提倡完全禁用链接转换。

我用了一个简单的技巧,在电话号码中间添加一个隐藏对象。

<span style="color: #fff;">
0800<i style="display:none;">-</i> 9996369</span>

这将帮助你覆盖手机号码颜色的IOS。

这个x-ms-format-detection="none"属性处理格式化电话。

https://msdn.microsoft.com/en-us/library/dn337007 (v = vs.85) . aspx

<p id="phone-text" x-ms-format-detection="none"  >Call us on <strong>+44 (0)20 7194 8000</strong></p>

如果人们在谷歌上发现这个问题,你所需要做的就是把电话号码作为一个链接,因为苹果会自动把它设置为一个链接。

HTML

<p id="phone-text">Call us on <strong>+44 (0)20 7194 8000</strong></p>

你的css

#phone-text a{color:#fff; text-decoration:none;}