Страницы iframe могут сказать, когда они - iframed?

Интересно, парни в Microsoft Research добавили контролируемые исключительные ситуации к Spec#, их надмножество C#.

7
задан Anthony 2 October 2009 в 13:21
поделиться

4 ответа

Что касается пункта 1, да, вы можете сказать, фреймируют ли вас, используя какой-нибудь простой javascript:

<script type="text/javascript">
if (self != top)
{
  // Framed!
}
</script>

Что касается пункта 2, я ' Я не уверен, что вы можете сделать, используя переменную "top", но я знаю, что вы можете изменить ее местоположение (так что, если ваш сайт создан другим сайтом, вы можете изменить расположение верхнего фрейма - по сути, перенаправляя пользователя прямо на ваш сайт).

Не уверен, что еще можно или нельзя делать с верхним фреймом - кто-то другой может предоставить там дополнительную информацию.

11
ответ дан 6 December 2019 в 12:52
поделиться

Вас также может заинтересовать эта статья Coding Horror об обнаружении фреймов. Вы можете определить, подверглись ли вы фрейму, но есть также контрмеры, которые "родительская" страница может предпринять, чтобы помешать вам действовать в этом направлении. Пример из статьи:

Определите, были ли вы подставлены:

if (parent.frames.length > 0) {
    top.location.replace(document.location);
}

Запретить обнаружение и перенаправление кадра:

   var prevent_bust = 0  
   window.onbeforeunload = function() { prevent_bust++ }  
   setInterval(function() {  
     if (prevent_bust > 0) {  
       prevent_bust -= 2  
       window.top.location = 'http://server-which-responds-with-204.com'  
     }  
   }, 1)  
4
ответ дан 6 December 2019 в 12:52
поделиться

Это возможно путем встраивания на страницу следующего кода JavaScript:

if(top.location.href != self.location){
//do redirection or display message
}

Вы можете использовать этот JavaScript как часть шаблона сайта и запретить отображение любой страницы в IFrame

1
ответ дан 6 December 2019 в 12:52
поделиться

Я делал это раньше, и это сработало:

<script type="text/javascript">
if (window.parent != null)
{
  // Framed!
}
</script>
0
ответ дан 6 December 2019 в 12:52
поделиться
Другие вопросы по тегам:

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