溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何解決iframe標(biāo)簽嵌套問題

發(fā)布時(shí)間:2022-03-01 10:28:31 來源:億速云 閱讀:238 作者:iii 欄目:開發(fā)技術(shù)

本文小編為大家詳細(xì)介紹“如何解決iframe標(biāo)簽嵌套問題”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“如何解決iframe標(biāo)簽嵌套問題”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識(shí)吧。

問題描述

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

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

如果為否,我們就會(huì)嵌套一個(gè)iframe標(biāo)簽來打開一個(gè)相應(yīng)的html窗口:

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

而此時(shí)有一個(gè)什么樣的問題呢?有這樣一個(gè)情況,當(dāng)我們?cè)谕粋€(gè)瀏覽器中,在A和B兩個(gè)選項(xiàng)卡中都打開了后臺(tái)管理頁面,然后我們?cè)贏頁面進(jìn)行了注銷操作,此時(shí)到A頁面點(diǎn)擊“員工管理”,那么此時(shí)應(yīng)該要實(shí)現(xiàn)全局刷新并返回到登錄頁面

但是此時(shí),由于我們嵌套iframe的緣故,當(dāng)我們點(diǎn)擊員工管理,正常發(fā)送的請(qǐng)求是/employee/index,而此時(shí)由于已經(jīng)logout,那么當(dāng)前用戶未認(rèn)證:

content:"<iframe frameborder='0' src='"+node.url+"' width='100%' height='100%'/>"

所以這里的iframe窗體的url地址就會(huì)變成login.jsp,從而演變成了iframe嵌套問題

解決思路

在我們html中,每一個(gè)打開的窗體都有一個(gè)window對(duì)象,例如我們上圖所示,如果站在內(nèi)層窗體的角度來講,實(shí)際上外層窗體其實(shí)就是內(nèi)層窗體的父窗體(如果打開很多個(gè)嵌套,那么最外層窗體就是top),如果要獲取外層窗體也很簡(jiǎn)單,就是window.parent。
此時(shí),如果我們要打開i的窗體不是最外層窗體,我們只需要將最外層的窗體對(duì)象賦值給當(dāng)前窗體即可:

//如果當(dāng)前的窗體不是最外層窗體
        if (window != top){
            //那么就將最外層窗體的的地址賦給當(dāng)前窗體
            top.location.href = window.location.href;
        }

讀到這里,這篇“如何解決iframe標(biāo)簽嵌套問題”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI