HTML中a标签target属性有哪些取值含义?

2026-04-27 18:281阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计700个文字,预计阅读时间需要3分钟。

HTML中a标签target属性有哪些取值含义?

target 属性不是用来实现锚点跳转的,它是控制链接在哪里打开的开关。锚点跳转依赖于 href 属性的值。

target="_blank" 必须配 rel="noopener noreferrer"

单独写 target="_blank" 是危险操作,现代浏览器不会阻止它,但会留出攻击面:

  • 不加 rel="noopener":新页面能通过 window.opener.location 把你原来的页面重定向到钓鱼页
  • 只加 noopener 不加 noreferrer:HTTP 请求头仍带 Referer,泄露来源 URL
  • 写成 target="blank"target="_new":这些都不是标准值,浏览器当无效字符串处理,退化为 _self

正确写法只有这一种:<a href="https://example.com" target="_blank" rel="noopener noreferrer">External Link</a>

_self、_parent、_top 这三个值现在还用得上吗

用得上,但场景很窄:

立即学习“前端免费学习笔记(深入)”;

  • _self 是默认行为,可省略;显式写出仅用于强调或覆盖父级 base 标签的 target
  • _parent_top 只在嵌套 <iframe> 的老式布局中生效;HTML5 已废弃 <frameset>,所以这两个值基本只出现在遗留系统或 iframe 微前端中
  • 如果页面没嵌 iframe,_parent_top 行为等同于 _self

能不能自定义 target 名称,比如 target="mywin"

可以,但要小心预期和现实的差距:

  • 浏览器会尝试查找名为 mywin<iframe> 或已打开的窗口;找不到就新建一个,名字叫 mywin
  • 后续所有 target="mywin" 的链接都会复用这个窗口/标签页——这点常被误认为“分组打开”,其实只是窗口复用
  • 该行为未被 HTML Living Standard 明确保证,不同浏览器对窗口复用策略有差异(比如 Chrome 通常复用标签页,Safari 可能新开)
  • 现代单页应用(SPA)中几乎不用,因为路由由 JS 控制,不再依赖窗口命名上下文

真正容易被忽略的是:哪怕你只写了一个 target="_blank" 却漏了 rel,CI/CD 流水线里的 Lighthouse 或 axe 扫描工具就会报安全缺陷;这不是“建议”,而是上线前的硬性拦截项。

标签:htmla标签

本文共计700个文字,预计阅读时间需要3分钟。

HTML中a标签target属性有哪些取值含义?

target 属性不是用来实现锚点跳转的,它是控制链接在哪里打开的开关。锚点跳转依赖于 href 属性的值。

target="_blank" 必须配 rel="noopener noreferrer"

单独写 target="_blank" 是危险操作,现代浏览器不会阻止它,但会留出攻击面:

  • 不加 rel="noopener":新页面能通过 window.opener.location 把你原来的页面重定向到钓鱼页
  • 只加 noopener 不加 noreferrer:HTTP 请求头仍带 Referer,泄露来源 URL
  • 写成 target="blank"target="_new":这些都不是标准值,浏览器当无效字符串处理,退化为 _self

正确写法只有这一种:<a href="https://example.com" target="_blank" rel="noopener noreferrer">External Link</a>

_self、_parent、_top 这三个值现在还用得上吗

用得上,但场景很窄:

立即学习“前端免费学习笔记(深入)”;

  • _self 是默认行为,可省略;显式写出仅用于强调或覆盖父级 base 标签的 target
  • _parent_top 只在嵌套 <iframe> 的老式布局中生效;HTML5 已废弃 <frameset>,所以这两个值基本只出现在遗留系统或 iframe 微前端中
  • 如果页面没嵌 iframe,_parent_top 行为等同于 _self

能不能自定义 target 名称,比如 target="mywin"

可以,但要小心预期和现实的差距:

  • 浏览器会尝试查找名为 mywin<iframe> 或已打开的窗口;找不到就新建一个,名字叫 mywin
  • 后续所有 target="mywin" 的链接都会复用这个窗口/标签页——这点常被误认为“分组打开”,其实只是窗口复用
  • 该行为未被 HTML Living Standard 明确保证,不同浏览器对窗口复用策略有差异(比如 Chrome 通常复用标签页,Safari 可能新开)
  • 现代单页应用(SPA)中几乎不用,因为路由由 JS 控制,不再依赖窗口命名上下文

真正容易被忽略的是:哪怕你只写了一个 target="_blank" 却漏了 rel,CI/CD 流水线里的 Lighthouse 或 axe 扫描工具就会报安全缺陷;这不是“建议”,而是上线前的硬性拦截项。

标签:htmla标签