2010-06-28 43 views
5

我正在一個框架環境中工作,並試圖判斷一些JavaScript代碼執行的框架是否是頂部框架(包含其餘部分的框架)。如何判斷當前幀是否是父級?

到現在爲止,我試圖用

window.parent != null 

,以檢查它,但它始終返回false,像在這個簡單的例子。

<html> 
<head> 
    <script> 
    alert(parent == null); 
    </script> 
</head> 

<body> 
    <h1>OH YEAH!</h1> 
</body> 
</html> 

有沒有辦法做到這一點?我不必隨身攜帶,現在我正在尋找IE6解決方案。

回答

7

我發現這個PDF是非常有用的: http://seclab.stanford.edu/websec/framebusting/framebust.pdf

總之,如果這是太長時間閱讀,這是他們最終提出:

<style> 
    html { display :none; } 
</style> 
<script> 
if(self==top){ 
    document.documentElement.style.display = 'block'; 
}else{ 
top.location=self.location; 
} 
</script> 

你會發現許多其他途徑在這個pdf中這樣做,每一個都意味着'正反兩面'。 顯然,在沒有JavaScript的瀏覽器上,這種解決方案可能會很痛苦;)

1

您可以檢查是否top.frames.length == 0

5
self === top 

如果在最上面的框架集中執行,則返回true,否則返回false。

相關問題