App下載

怎么解決iframe標簽嵌套問題?解決方法詳情!

花式作死冠軍 2021-08-10 17:02:21 瀏覽數(shù) (3567)
反饋

對于前端開發(fā)或者其他語言的技術人員使用嵌套技術可以為自己本身帶來一點的便捷和更快速的完成一個功能!,那么今天就和大家講講有關于:“怎么解決iframe標簽嵌套問題?”這個問題! 

問題描述

當我們使用easyui做后臺管理系統(tǒng)的時候,會使用tree組件來實現(xiàn)樹形菜單,而我們每點擊一次相應菜單,會根據(jù)是否有url來判斷是否是一級菜單,以及是否已經(jīng)存在:

//根據(jù)該節(jié)點名字判斷該節(jié)點是否存在
                if ($("#tabs").tabs("exists",node.text)){
                    //如果存在就直接選中
                    $("#tabs").tabs("select",node.text);
                }

如果為否,我們就會嵌套一個iframe標簽來打開一個相應的html窗口:

$("#tabs").tabs("add",{
                        //標題為當前節(jié)點的名稱
                        title:node.text,
                        //沒有邊框
                        border:false,
                        //是否顯示關閉按鈕
                        closable:true,
                        //嵌套iframe標簽
                        content:"<iframe frameborder='0' src='"+node.url+"' width='100%' height='100%'/>"
                    })

而此時有一個什么樣的問題呢?有這樣一個情況,當我們在同一個瀏覽器中,在A和B兩個選項卡中都打開了后臺管理頁面,然后我們在A頁面進行了注銷操作,此時到A頁面點擊“員工管理”,那么此時應該要實現(xiàn)全局刷新并返回到登錄頁面,如下圖所示


登錄

但是此時,由于我們嵌套iframe的緣故,當我們點擊員工管理,正常發(fā)送的請求是/employee/index,而此時由于已經(jīng)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標簽嵌套問題?”這個問題的文章就介紹到這了,更多相關iframe標簽嵌套內容請搜索W3Cschool進行學習和了解! 

0 人點贊