Как сказать, является ли текущий кадр родителем?

Я работаю в обрамленной среде и пытаюсь сказать, является ли кадр, на котором выполняется некоторый код JavaScript, главным кадром (тот, который содержит остальных).

Вплоть до сих пор я пытался проверить его с

window.parent != null

но это всегда возвращает false, как в этом простом примере.

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

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

Существует ли способ сделать это? Я не должен быть портативным, прямо сейчас я ищу решение IE6.

5
задан zb226 7 April 2017 в 12:58
поделиться

3 ответа

Мне очень пригодился этот 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 это решение может быть болезненным;)

7
ответ дан 18 December 2019 в 14:42
поделиться

Вы можете проверить, если top.frames.length == 0 .

1
ответ дан 18 December 2019 в 14:42
поделиться
self === top

должно возвращать истину, если выполняется в самом верхнем наборе фреймов, и ложь в противном случае.

5
ответ дан 18 December 2019 в 14:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: