2013-01-09 22 views

回答

2

This answer適用於這個問題還有:如果它被放置在被一個iframe內引用的HTML

此代碼將工作。它的工作方式是看top(您要求的頁面包括iframe)和selfiframe中的頁面。如果不同,則會更改top.location以匹配iframe的URL。

下面是一些ASCII幫助理解這個

|----[OuterPage.html]------| 
|       | 
| |--[InnerPage.html]-| | 
| |     | | 
| | top !== self  | | 
| |     | | 
| |-------------------| | 
|       | 
| top === self    | 
|       | 
|--------------------------| 

如果你(在一個iframe不)要求InnerPage.html本身則top === self的值爲true,但是如果你請求一個iframe中的同一頁那麼相同的條件將被評估爲假。

1

還有一個http header X-Frame-Origin指定爲here,如果設置爲SAMEORIGIN,則可以將其放入服務器響應中,該響應將阻止瀏覽器呈現iframe。

然而,這是一個瀏覽器依賴的解決方案(因爲在瀏覽器將不得不支持頭來尊重它的價值),但比JS欺騙IMO更好。

+0

如果將兩種解決方案結合起來會怎麼樣 - 使用JavaScript解決方案還有什麼好處? –

+0

沒有理由你不能這樣做,JS會因任何不尊重頭部的瀏覽器而失敗。它仍然不是100%成功(有人可能是在一個不支持的瀏覽器,禁用JS),但這是一個邊緣案例,我會說它並不值得擔心。 – Psytronic

相關問題