rel="external"在浏览器中完全无效,它不是WHATWG/W3C标准值,浏览器直接忽略;真正有效的是target="_blank"配合rel="noopener noreferrer"防劫持和隐私泄露。

rel="external" 在浏览器里完全没用
它不是 WHATWG/W3C 标准定义的合法值,浏览器遇到 rel="external" 就当没看见——不触发任何行为、不改变打开方式、不添加语义、也不影响渲染。所谓“替代 target="_blank"”或“告诉搜索引擎这是外链”,全是过时误解或工具链自行扩展的副作用。
为什么有人还在写 rel="external"
常见原因有三个,但都不构成正当理由:
- 误信老文档:XHTML 1.0 Strict 下
target="_blank"确实被禁止,但那是 2000 年代初的规范,现代 HTML5 完全支持target="_blank",且更可靠 - CMS 或静态生成器自动注入:比如 Jekyll 插件扫描域名后加
rel="external",但这属于工具层逻辑,不是 HTML 本身能力 - CSS 或 JS 选择器需要:仅用于样式(如
a[rel~="external"] { color: #666; })或脚本标记(如document.querySelectorAll('a[rel~="external"]')),纯前端控制,与语义无关
真正该关心的 external 相关实践
如果你的目标是安全、合规地处理外部链接,重点不在 external,而在以下三点:
- 必须用
target="_blank"控制新开页,这是唯一有效方式 -
target="_blank"必须配rel="noopener noreferrer":前者防window.opener劫持,后者禁 Referer 泄露;只写rel="noopener"或只写rel="noreferrer"都不完整 - SEO 场景下,用
rel="nofollow"、rel="ugc"或rel="sponsored"替代rel="external nofollow"—— 后者中external无效,仅nofollow起作用
容易被忽略的兼容性细节
旧版 Safari(11.1 之前)不识别 rel="noopener" 单独存在,必须搭配 noreferrer 才生效;而 rel="noreferrer" 在部分 Android WebView 中隐式包含 noopener,但语义模糊。所以最稳妥写法永远是:rel="noopener noreferrer",别省略任何一个词。
立即学习“前端免费学习笔记(深入)”;



















