target属性用于指定链接打开位置,非锚点跳转;锚点靠href="#id"实现。_blank需配rel="noopener noreferrer"防安全风险,_self/_parent/_top适用iframe场景,自定义名称如"mywin"可复用窗口但行为不统一。
target 属性不是用来实现锚点跳转的,它是控制链接“在哪里打开”的开关。锚点跳转靠的是 href 值以 # 开头(比如 href="#section2"),而 target 决定这个跳转发生在当前页、新页,还是某个 iframe 里。
单独写 target="_blank" 是危险操作,现代浏览器不会阻止它,但会留出攻击面:
rel="noopener":新页面能通过 window.opener.location 把你原来的页面重定向到钓鱼页noopener 不加 noreferrer:HTTP 请求头仍带 Referer,泄露来源 URLtarget="blank" 或 target="_new":这些都不是标准值,浏览器当无效字符串处理,退化为 _self
正确写法只有这一种:<a href="https://example.com" target="_blank" rel="noopener noreferrer">External Link</a>
用得上,但场景很窄:
立即学习“前端免费学习笔记(深入)”;
_self 是默认行为,可省略;显式写出仅用于强调或覆盖父级 base 标签的 target
_parent 和 _top 只在嵌套 <iframe> 的老式布局中生效;HTML5 已废弃 <frameset>,所以这两个值基本只出现在遗留系统或 iframe 微前端中_parent 和 _top 行为等同于 _self
可以,但要小心预期和现实的差距:
mywin 的 <iframe> 或已打开的窗口;找不到就新建一个,名字叫 mywin
target="mywin" 的链接都会复用这个窗口/标签页——这点常被误认为“分组打开”,其实只是窗口复用真正容易被忽略的是:哪怕你只写了一个 target="_blank" 却漏了 rel,CI/CD 流水线里的 Lighthouse 或 axe 扫描工具就会报安全缺陷;这不是“建议”,而是上线前的硬性拦截项。