一、背景
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();
});