target="_parent" 行为是将链接在当前 iframe 的直接父级上下文中打开;仅在嵌套 iframe 场景下生效,若无父级则退化为_self,不跳转至_top。

target="_parent" 是什么行为?
它会让链接在当前 frame 的直接父级上下文中打开,不是顶层窗口,也不是同层 frame。如果当前页面不在 frame 里,target="_parent" 和 target="_self" 效果一样——在当前标签页加载。
什么时候 target="_parent" 才真正起作用?
只在嵌套的 场景下有意义,比如:外层页面嵌了一个 ,而 a.html 里又嵌了 ,这时 b.html 中的链接设 target="_parent",就会在 a.html 所在的 iframe(即它的父级)中加载目标页。
- 若当前文档是顶层页面(无任何父 frame),
target="_parent"会退化为_self - 若父级 frame 已被移除或不可访问(如跨域 iframe),浏览器通常静默降级到
_self,不会报错但也不生效 -
target="_parent"不会跳到顶层(_top),这点常被误以为等价于“跳出所有框架”
和 target="_top"、target="_self" 的关键区别
三者定位层级不同:
-
target="_self"→ 当前 frame / tab -
target="_parent"→ 当前 frame 的直接父 frame(可能仍是 iframe) -
target="_top"→ 顶层 window(整个浏览器 tab),强制打破所有嵌套
比如你在三层 iframe 深度(A → B → C),点击 C 里的链接:
<a href="page.html" target="_parent">跳到 B</a> <a href="page.html" target="_top">跳到顶层</a>
前者替换 B 的内容,后者替换整个 tab 页面。
实际使用要注意的坑
现代单页应用(SPA)和微前端常用沙箱 iframe,但多数场景已弃用多层 frame 布局;target="_parent" 在主流框架中几乎无用武之地,反而容易因预期不符导致跳转失败。
- 跨域 iframe 下,
target="_parent"可能被浏览器策略拦截,不提示、不报错、也不跳转 - Vue/React 项目里用
或useNavigate时,target属性会被忽略——这些是 JS 导航,不走原生 a 标签跳转逻辑 - 如果想“在父页面打开链接”,更可靠的方式是父页面暴露
window.parent.postMessage接口,子 iframe 主动通知父页执行跳转
真正需要 target="_parent" 的场景越来越少,遇到问题先确认是否真有嵌套 frame 结构,而不是默认它该“跳出当前 iframe”。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











