本文详解 JavaScript 中 iframe 嵌套场景下的页面跳转与刷新机制。通过对比 window.location、parent.location 和 top.location 的行为,明确如何控制当前页面、直接父页面及最外层容器的跳转目标。同时涵盖 form 标签 target 属性在 iframe 中的表现,以及利用 location.reload() 和 opener 对象实现指定层级页面刷新的具体代码示例。
iframe 页面跳转的核心方法
使用 "window.location.href" 或 "location.href" 可实现当前页面(本层)的跳转。
使用 "parent.location.href" 可实现直接父级页面的跳转。
使用 "top.location.href" 可实现最外层顶层页面的跳转。
嵌套页面跳转行为示例
以下通过具体示例进行说明:
假设 A、B、C、D 均为 JSP 页面,且存在如下嵌套关系:D 是 C 的 iframe,C 是 B 的 iframe,B 又是 A 的 iframe。若 D 页面中的 JavaScript 代码执行如下操作:
执行 "window.location.href" 或 "location.href" 时,D 页面自身发生跳转。
执行 "parent.location.href" 时,C 页面发生跳转。
执行 "top.location.href" 时,A 页面(最外层)发生跳转。
若 D 页面中包含 form 表单,其提交行为受 target 属性控制:
Form 提交与页面刷新机制
若使用 <form> 提交表单,D 页面自身发生跳转。
若使用 <form target="_blank"> 提交表单,将弹出一个新页面显示结果。
若使用 <form target="_parent"> 提交表单,C 页面发生跳转。
若使用 <form target="_top"> 提交表单,A 页面(最外层)发生跳转。
关于页面刷新,在 D 页面中可采用如下写法:
执行 "parent.location.reload();" 可使 C 页面刷新。此外,也可通过子窗口的 opener 对象获取父窗口引用,使用 "window.opener.document.location.reload();" 实现相同效果。
执行 "top.location.reload();" 可使 A 页面(最外层)刷新。