format-detection 是 ios safari 专属的非标准 meta 指令,用于控制是否将页面中纯数字串自动识别为可点击的电话、地址等链接;android 浏览器完全忽略该标签。

meta 标签里的 format-detection 是什么
它是个 iOS Safari 专属的非标准 meta 指令,用来开关自动识别页面中数字串为电话、地址、日期等可点击链接的行为。Android 浏览器完全不认这个标签,所以只影响 iPhone/iPad 用户。
如何关闭电话号码自动识别
在 里加这行就行:
<meta name="format-detection" content="telephone=no">
注意:content 值必须是 telephone=no(不是 false、off 或空字符串),大小写敏感,且不能带多余空格。写成 telephone=NO 或 telephone=no; 都会失效。
- 只对纯数字串起作用(比如
13812345678),带括号/横线/+86 的一般不会被识别 - 如果页面里用了
<a href="tel:..."></a>,这个标签不影响手动写的电话链接 - 加了之后,iOS Safari 就不会再给数字加蓝色底纹和点击响应
为什么有时候加了也不生效
常见原因有三个:
-
<meta>标签没放在里,或者被 JS 动态插入(iOS 只读取初始 HTML 中的声明) - 页面存在多个
format-detectionmeta,后出现的会覆盖前面的,比如同时写了telephone=no和telephone=yes,以最后一个为准 - 数字本身被包裹在
<a></a>、<button></button>或设置了pointer-events: none的容器里,系统可能跳过识别逻辑
要不要全局关掉?得看场景
电商订单页显示客服电话,关掉是合理的;但企业官网「联系我们」模块里希望用户一点就拨号,那就不该关。更稳妥的做法是:
- 用 CSS 控制:给不需要识别的数字加
style="text-decoration: none; color: inherit;",再配合telephone=no双保险 - 避免在数字周围加
<span></span>或<div> 时意外触发语义(比如 class 名含 <code>tel或phone,某些老版本 iOS 会增强识别倾向) - 测试真机:模拟器或 Chrome DevTools 的 device mode 不会触发该行为,必须用 iPhone 实测
真正麻烦的是混合内容——比如一个 <div> 里既有要识别的客服号,又有不该识别的订单号。这时候没法靠 meta 统一控制,只能把订单号用零宽空格隔开,或者套一层 <code>aria-disabled="true"(虽不规范但实测有效)。










