iframe嵌套页面的跳转方式

时间:2023-06-29 13:18:20

一、背景
A,B,C,D都是jsp,D是C的iframe,C是B的iframe,B是A的iframe,在D中跳转页面的写法区别如下。

二、JS跳转
window.location.href、location.href 本页面跳转,D页面跳转
parent.location.href 上一层页面跳转,C页面跳转
top.location.href 最外层页面跳转,A页面跳转

三、链接或者form
D页面中有form
<form>: form提交后D页面跳转
<form target="_blank">: form提交后弹出新页面
<form target="_parent">: form提交后C页面跳转
<form target="_top"> : form提交后A页面跳转

四、刷新
parent.location.reload():C页面刷新
window.opener.document.location.reload():C页面刷新(使用子窗口的opener对象来获得父窗口对象)

top.location.reload():A页面刷新

知识点转自http://blog.csdn.net/yuling59520/article/details/5630766

虽然现在iframe用的较少,但是一些管理系统里还是会用到,今天项目里就遇到一个很奇怪的bug,layer弹出层是一个新页面,页面上有日历控件(WdatePicker.js),关闭弹框时日历控件没有自动消失,这个bug不是所有的页面有,所以很奇葩,这个时候就用到了上面的知识点来解决的,代码如下:

$(window.parent.document).find(".layui-layer-close").on("mousedown", function(){//关闭弹框前把日历控件关闭
    window.top.$("body>div>iframe").parent("div").hide();
});