我正在一个框架环境中工作,并试图判断一些javascript代码执行的帧是否是顶部框架(包含其余部分的框架)。
到目前为止,我试图用
检查它window.parent != null
但它总是返回false,就像在这个简单的例子中一样。
<html>
<head>
<script>
alert(parent == null);
</script>
</head>
<body>
<h1>OH YEAH!</h1>
</body>
</html>
有办法做到这一点吗?我不需要便携,现在我正在寻找IE6解决方案。
答案 0 :(得分: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 :(得分:5)
self === top
如果在最顶层的框架集中执行,应返回true,否则返回false。
答案 2 :(得分:1)
您可以查看是否top.frames.length == 0
。