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

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

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

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

我确实读过这篇文章:

移动HTML渲染数字

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


如果你想保留电话号码的功能,但只是为了显示而删除下划线,你可以将链接样式设置为任何其他:

a:link {text-decoration: none; /* or: underline | line-through | overline | blink (don't use blink. Ever. Please.) */ }

我还没有看到建议将类应用于电话号码链接的文档,因此您必须向想要具有不同风格的链接添加类/id。

或者你可以使用以下方法来设置链接的样式:

a[href^=tel] { /* css */ }

iPhone可以理解这一点,但其他UA并不适用(据我所知,Android、黑莓等平台的用户/开发者也可以对此发表评论)。


两个选项…

1. 设置格式检测元标记。

要删除所有电话号码的自动格式化,请将以下内容添加到html文档的头部:

<meta name="format-detection" content="telephone=no">

查看更多苹果特定的元标签键。

注意:如果你在页面上有电话号码,你应该手动将它们格式化为链接: < a href = "电话:+ 1-555-555-5555 " > 1-555-555-5555 < / >


2. 不能设置元标签?想要使用css?

两个css选项:


选项1(更适合网页)

使用css属性选择器来目标href值以tel开头的链接:

a[href^="tel"] {
  color: inherit; /* Inherit text color of parent element. */
  text-decoration: none; /* Remove underline. */
  /* Additional css `propery: value;` pairs here */
}

选项2(更适合html电子邮件模板)

或者,当你不能设置元标签时,比如在html电子邮件中,在链接/锚标签中包装电话号码(<a href=""></a>),然后使用类似于下面的css来定位它们的样式,并调整你需要重置的特定属性:

a[x-apple-data-detectors] {
  color: inherit !important;
  text-decoration: none !important;
  font-size: inherit !important;
  font-family: inherit !important;
  font-weight: inherit !important;
  line-height: inherit !important;
}

如果你想要针对特定的链接,在你的链接上使用类,然后更新上面的css选择器为[x-apple-data-detectors].class-name。


我一直在

1.

    <a href="tel:5551231234">

2.

    <meta name="format-detection" content="telephone=no">

试着让同样的代码适用于台式机和iPhone。问题在于,如果你使用了第一个选项,并从桌面浏览器中点击它,它会给出一个错误消息,如果使用了第二个选项,它会禁用iPhone iOS5上的标签呼叫功能。

所以我试了又试,结果iPhone把电话号码当作一种特殊类型的链接,可以用CSS格式化。我把数字包装在一个地址标签(它将与任何其他HTML标签,只是尽量避免< >标签),并在CSS样式为

.myDiv address a {color:#FFF; font-style: normal; text-decoration:none;}

在桌面浏览器中显示一个纯文本,在Safari移动浏览器中显示一个链接,并在选项卡上弹出Call/Cancel窗口,没有默认的蓝色和下划线。

只是要注意应用于数字的css规则,特别是在使用填充/边距时。


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

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

这对我来说很管用:

.appleLinks a {color:#000000;}
.appleLinksWhite a {color:#ffffff;}

你可以在这里找到更多信息。


我来详细阐述一下David Thomas之前的建议:

a[href^="tel"]{
    color:inherit;
    text-decoration:none;
}

将此添加到css中会保留电话号码的功能,但会去掉下划线并匹配您最初使用的颜色。


尝试将ASCII字符的破折号放在数字分隔之间。

从这里:-

到此:&ndash;

例如:change 555-555-5555 => 555&ndash;555&ndash;5555


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

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

不需要使用<meta name="format-detection" content="telephone= No ">删除格式检测。尝试在任何标签中使用电话号码,而不是锚定标签,并相应地设置它的样式,例如:span {background:none !边界:0;填充:0;}


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

一个老问题,但上面的答案都不适合我,我张贴了我是如何解决它的

我有个电话号码在单子上:

<li class="phone_menu">+555 5 555 55 55</li>

css:

.phone_menu{
  color:orange;
}

但是在iPad/iPhone上它是黑色的,所以我只是添加了这个css:

.phone_menu a{
  color:orange;
}

由于我们在一个网站上使用tel:链接,在大多数解决方案之前,这里发布了另一个问题。

我使用元标签:

<元名称=“格式检测” 内容=“电话=否”>

这与指定tel: links站点范围内它应该链接!

使用css真的不是一个选择,因为它隐藏了相关的电话链接。


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

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

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


<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>');

如果您不打算在您的页面上有任何电话号码,那么 <meta name="format-detection" content="telephone=no"> 会工作得很好。但从修辞上讲,如果你打算混合使用电话号码和非电话号码呢?

假设您只是将数字硬编码到HTML中,那么“在数字中间插入一些东西”的技巧将会起作用。但是对于动态页面,例如使用PHP从查询中输出数值数据,它们几乎没有用处。

例如,我正在生成一个城市人口列表。有些用户数量大到足以让Mobile Safari把它们转换成电话号码链接。幸运的是,我所要做的就是使用PHP number_format()在数组输出周围插入“thousand”逗号:

<?PHP echo number_format($row["population"])

这种格式足以让Mobile Safari相信这个号码有更具体的用途,所以它不再把我的大号码默认为电话链接。@davidcondrey建议使用<a href="tel:18001234567">1-800-123-4567</a>来指定数字的用途,也是如此。

总之,Safari Mobile显然很注意语义。考虑到HTML5是围绕语义标记构建的,而搜索引擎也依赖于语义标记,我打算尽可能多地使用它。


Joomla Yootheme对我来说很有用:

a:not([class]) {
    color: #fff !important;
}

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


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>