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