Я работаю в обрамленной среде и пытаюсь сказать, является ли кадр, на котором выполняется некоторый код JavaScript, главным кадром (тот, который содержит остальных).
Вплоть до сих пор я пытался проверить его с
window.parent != null
но это всегда возвращает false, как в этом простом примере.
<html>
<head>
<script>
alert(parent == null);
</script>
</head>
<body>
<h1>OH YEAH!</h1>
</body>
</html>
Существует ли способ сделать это? Я не должен быть портативным, прямо сейчас я ищу решение IE6.
Мне очень пригодился этот 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 это решение может быть болезненным;)
self === top
должно возвращать истину, если выполняется в самом верхнем наборе фреймов, и ложь в противном случае.