必须用且严格满足:位于中后、全小写、content值无空格换行、禁用多项需合并书写;仅旧版iOS Safari(10–14)有效,现代浏览器无效;兜底可用pointer-events:none或零宽空格。

在 HTML5 中,想让手机浏览器(主要是旧版 iOS Safari)不把邮箱地址自动识别为可点击链接,得用 <meta name="format-detection" content="email=no">,但这个标签非常“娇气”,写错一个字符就失效。
必须严格遵守的写法规范
这个 meta 标签不是“写了就行”,而是有硬性要求:
-
位置要对:必须放在
内,且要在<title></title>之后、任何内容渲染前加载; -
name 和 content 全小写:不能写成
Name或CONTENT,否则 iOS Safari 直接忽略; -
content 值无空格、无换行、逗号紧连:正确是
email=no,错误写法包括email= no、email = no、email=no,(末尾空格); -
不要和其它 format-detection 拆成多个标签再合并逻辑:比如同时禁电话和邮箱,推荐写成
content="telephone=no,email=no",而不是两个独立 meta——后者容易被后加载脚本覆盖。
它只在部分环境有效,别指望全覆盖
这个 meta 是 WebKit 私有属性,现代浏览器基本不认:
- ✅ 仅旧版 iOS Safari(iOS 10–14)能稳定响应
email=no; - ⚠️ iOS 15+ 开始弱化,iOS 16+ 对标准格式
name@domain.com基本无效; - ❌ Chrome、Firefox、Edge 完全不识别,加了也白加。
更靠谱的兜底方案(推荐搭配使用)
当 meta 不起作用时,直接干预 DOM 更可控:
立即学习“前端免费学习笔记(深入)”;
-
给邮箱外层套 span 并禁用点击穿透:
<span style="pointer-events:none">user@example.com</span>,文本照常显示,但点不动; -
插入零宽空格()打断识别逻辑:写成
user@example.com或user@example.com,多数系统不再触发 mailto; -
避免纯文本裸露:如果页面允许,把邮箱放进
<input type="email">或带mailto:的链接里,反而更可控——毕竟你本意是“不让它被意外识别”,不是“彻底消灭邮箱语义”。



















