31

即使系统上没有安装电话应用程序,Windows 10 的边缘浏览器似乎也能检测到电话号码。

它将电话号码格式化为带有下划线的蓝色,即使它只是在某处的纯文本中(在某些背景下很难看),而且它会检测例如增值税号码,就好像它们是电话号码一样。

那么作为网站管理员,我们如何控制它:

  • 它如何呈现检测到的东西(我想 MSFT 为这些东西发明了他们自己的 CSS 选择器?)

  • 我们如何关闭检测

最好使用仅针对该浏览器的东西,而不是冒着为他人弄乱东西或向其他有效代码添加非标准内容的风险。

编辑:

  • 建议的根据在 IE11 中为 windows 手机完成检测的方式关闭检测的方法在我的所有测试中都不起作用。元标记失败并且非标准的 html 属性似乎确实有效。

  • 我已经查看了边缘中的检查内容,在我看来,那些检测到的项目的计算 CSS 是人们期望看到的,如果它没有被检测到(即计算的 CSS 是正常颜色,没有下划线),这表明几乎没有机会控制它的渲染方式。

编辑:

测试用例 1:元标记(失败)

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta charset="UTF-8" />
    <!-- test -->
    <meta name="format-detection" content="telephone=no" />
  </head>
  <body>
    <p>text VAT BE 0123.456.789 text </p>
    <p>text +32 11 222 333 text</p>
  </body>
</html>

测试用例 2:非标准 html 属性(有效)

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta charset="UTF-8" />
  </head>
  <body>
    <p x-ms-format-detection="none">text VAT BE 0123.456.789 text </p>
    <p>text +32 11 222 333 text</p>
  </body>
</html>

4

5 回答 5

28

显然,电话号码检测是在 Internet Explorer 11 中引入的,但不是在台式机上。

以下是控制它的方法,取自这篇 MS 文章:电话号码格式识别

  • 要禁用元素(及其子元素)的行为,请将x-ms-format-detection属性设置为“none”。
  • 要禁用网页的行为,请使用 meta 元素:

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

  • 要启用元素(及其子元素)的行为,请将x-ms-format-detection属性设置为“phone”或“all”。

  • 要使用 JavaScript 选择性地控制行为,请使用setAttribute更改x-ms-format-detection关联元素或其父元素的属性值。(请注意,这需要在元素或父元素在 DOM 中呈现之前完成;不支持动态更改。)

如果我正确理解这篇文章,如果在浏览器级别禁用电话检测,则x-ms-format-detection属性(或元标记)将被忽略。

于 2015-07-30T08:46:42.363 回答
6

使用x-ms-format-detection="none"为我工作的。但是我必须将它添加到父元素。

例如,我的电话号码被包裹在一个跨度类中,所以我必须将它添加到上面的父 div 中。直接添加到 span 标签并不能解决我的问题。

希望有帮助

于 2015-08-13T09:46:23.390 回答
1

如果将 x-ms-format-detection="none" 添加到 body 标记,它将应用于整个页面。

<body x-ms-format-detection="none">
于 2015-11-25T17:19:07.260 回答
1

我找到了一种对我来说完美的方法,它包括用“a”(锚)而不是你可能拥有的任何一个来更改你有数字的标签,而不需要href。然后,将 text-underline 设置为 none 并将 color 设置为继承。就这样。

于 2015-09-08T11:47:49.703 回答
-1

这应该是评论,但我还没有声誉,对不起!

基于jfrej先前的回答和 Ben Hillier 的后续评论,我想指出x-ms-format-detection="none"可以在 span 元素上工作,但不能使用 de default display: inline,而是使用display: inline-block.

同样使用<div x-ms-format-detection="none" style="display: inline">1234567890</div>也不行。

于 2019-01-03T12:12:49.530 回答