Как узнать загружена ли страница во фрейм или в основное окно браузера?

Часто бывает необходимо скрыть часть контента, при загрузке страницы во фрейм или что-то подобное. Это можно легко узнать с помошью следующего javascript:

javascript

if (window!=window.top) { 
  /* страница загружена во фрейм */ 
} else {
  /* страница загружена в основное окно браузера */ 
}
 Cуть заключается в том, что-бы сравнить текущее окно 

window и верхнее в иерархии окно браузера window.top. В случае, если это одно и то-же окно, можно сделать вывод, что страница загружена в основное окно браузера.

2 comments on “Как узнать загружена ли страница во фрейм или в основное окно браузера?
  1. Impera CMS пишет:

    Ниже универсальное решение на языке JavaScript, которое учитывает 3 способа определения, в каком окне браузера открыта страница. Причем решением учтено, что согласно контексту безопасности браузера доступ к любым переменным и свойствам основного окна из фрейма будет невозможен, если URL фрейма не принадлежит к пространству адресов домена основного окна браузера.

    var isFramed = false;
    try {
      isFramed = window != window.top || document != top.document || self.location != top.location;
    } catch (e) {
      isFramed = true;
    }
    if (isFramed) {
      /* страница загружена во фрейме */
    } else {
      /* страница загружена в основном окне */
    }
    

    Такое же решение использовано на сайте Impera CMS.

  2. Vital пишет:

    можно на уровне протокола делать проверку. если добавить к заголовкам


    X-Frame-Options: DENY

    то браузер не отобразит страницу, которую пытаются открыть во фрейме. так, например, делает яндекс

Оставить комментарий

Ваш email не будет опубликован. Обязательные поля отмечены *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax

*

* Copy This Password *

* Type Or Paste Password Here *

Проект создан в GanttPRO
Спасибо за лайк в FACEBOOK
Подписывайтесь на новости вконтакте
Последние статьи от html5.by