2017-10-06 99 views
0

我有一個iframe(Java servlet爲)的網站,該網站看起來有點像這樣的問題:在基於iframe的網站中,如何在用戶點擊一個iframe中的鏈接後在新窗口中加載所有iframe?

<!DOCTYPE html> 
 
<head></head> 
 
<body> 
 
    
 
<iframe id="top" name="top" src="$link.setAction('top').relative()"></iframe> 
 

 
<iframe id="content" name="content" src="$link.setAction('content').relative()"></iframe> 
 

 
<iframe id="footer" name="footer" src="$link.setAction('footer').relative()"></iframe> 
 

 
</body> 
 

 
</html>

因爲每個I幀的是一個獨立的網頁,如果用戶決定從任何iframe中打開鏈接,在新窗口或標籤頁中加載的頁面看起來破碎,因爲它只是整個網站的一部分。

我想知道是否有方法檢測用戶是否從瀏覽器中選擇了「在新選項卡中打開」或「在新窗口中打開」。然後,我必須確保在發生這種情況後,所有的iframe都會加載到新窗口中。

讓我知道是否還有更好的解決方案。

+1

爲什麼你需要做的是什麼?每種情況下你都會發送一個不同的呈現iframe? – Kalamarico

+0

我正在使用的應用程序已經建立了一段時間,並且有人決定使用HTML5中不支持的** frameset **。因此,我們將其更改爲** iframes **。我剛剛在下面的評論中描述了這個問題:「如果有人決定使用右鍵單擊上下文菜單並選擇」在新窗口中打開鏈接「,則只會打開鏈接所在的iframe,例如,如果我嘗試從**內容** iframe中打開一個鏈接,只有沒有**頂部**和**頁腳**的這個iframe將被加載到新窗口中,所以頁面看起來會被破壞。「 – rmatuszczak

回答

1

使用目標屬性可以解決用戶在瀏覽iframe時遇到的問題。

你的iFrame是已命名頂部內容,並頁腳。您還可以將三個iframe放置在父iframe中,然後您可以將其命名爲main_iframe

然後,對於您的鏈接,請指定您希望它們在使用目標屬性時打開的iframe的名稱。

<a href="top.html" target="top">Example link inside the top frame which opens only in top frame</a> 
<a href="content.html" target="content">Example link inside the content frame</a> 
<a href="bottom.html" target="bottom">Example link inside the bottom frame</a> 

<a href="main.html" target="main_iframe">Example link which opens in the parent frame</a> 

然後,您可以禁用oncontextmenu使用Javascript 右鍵單擊事件:

window.oncontextmenu = function() { 
     return false; 
    } 
+0

不幸的是,這個解決方案並沒有解決我的問題。我已經在使用** target **屬性來瀏覽應用程序。但是,如果有人決定使用右鍵單擊上下文菜單並選擇「在新窗口中打開鏈接」,則只會打開鏈接所在的iframe。例如,如果我嘗試從** content ** iframe中打開一個鏈接,只有沒有** top **和** footer **的這個iframe將被加載到新窗口中,所以頁面看起來會被破壞。 – rmatuszczak

相關問題