您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“如何解決iframe標簽嵌套問題”,內容詳細,步驟清晰,細節處理妥當,希望這篇“如何解決iframe標簽嵌套問題”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
問題描述
當我們使用easyui做后臺管理系統的時候,會使用tree組件來實現樹形菜單,而我們每點擊一次相應菜單,會根據是否有url來判斷是否是一級菜單,以及是否已經存在:
//根據該節點名字判斷該節點是否存在
if ($("#tabs").tabs("exists",node.text)){
//如果存在就直接選中
$("#tabs").tabs("select",node.text);
}
如果為否,我們就會嵌套一個iframe標簽來打開一個相應的html窗口:
$("#tabs").tabs("add",{
//標題為當前節點的名稱
title:node.text,
//沒有邊框
border:false,
//是否顯示關閉按鈕
closable:true,
//嵌套iframe標簽
content:"<iframe frameborder='0' src='"+node.url+"' width='100%' height='100%'/>"
})
而此時有一個什么樣的問題呢?有這樣一個情況,當我們在同一個瀏覽器中,在A和B兩個選項卡中都打開了后臺管理頁面,然后我們在A頁面進行了注銷操作,此時到A頁面點擊“員工管理”,那么此時應該要實現全局刷新并返回到登錄頁面
但是此時,由于我們嵌套iframe的緣故,當我們點擊員工管理,正常發送的請求是/employee/index,而此時由于已經logout,那么當前用戶未認證:
content:"<iframe frameborder='0' src='"+node.url+"' width='100%' height='100%'/>"
所以這里的iframe窗體的url地址就會變成login.jsp,從而演變成了iframe嵌套問題
解決思路
在我們html中,每一個打開的窗體都有一個window對象,例如我們上圖所示,如果站在內層窗體的角度來講,實際上外層窗體其實就是內層窗體的父窗體(如果打開很多個嵌套,那么最外層窗體就是top),如果要獲取外層窗體也很簡單,就是window.parent。
此時,如果我們要打開i的窗體不是最外層窗體,我們只需要將最外層的窗體對象賦值給當前窗體即可:
//如果當前的窗體不是最外層窗體
if (window != top){
//那么就將最外層窗體的的地址賦給當前窗體
top.location.href = window.location.href;
}
讀到這里,這篇“如何解決iframe標簽嵌套問題”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。