Проверить, что страница загружена в iframe — JavaScript

Проверить, что страница загружена в iframe — JavaScript

Совсем недавно сервис, над которым мы с ребятами трудились долгое время, начал сотрудничать со сторонней системой. И эта система подгружала данные сервиса в обычный iframe. И вот потребовалось немного изменить внешний вид сервиса только для пользователей, которые видят его через iframe. Как это можно сделать проще всего?

Скажу сразу, что изменение очень незначительное, касается штрихов в дизайне, но сделать его было нужно. Для этого был выбран наиболее простой путь - определять нужно на "фронте". Как определить, что страница загружена через iframe с помощью javascript? Давайте разберемся.

На самом деле все очень просто. Достаточно сделать пару проверок, чтобы достоверно определить, как загружена страница - в основном окне или в iframe. Давайте посмотрим сразу на код:

var isFramed = false;
try {
	isFramed = window != window.top || document != top.document || self.location != top.location;
} catch (e) {
	isFramed = true;
}
if (isFramed) {
	alert('Страница загружена в iframe');
} else {
	alert('Страница загружена не в iframe');
}

Вот и все. Конечно же, этот код должен выполняться на той стороне, которую грузят в iframe.

Для примера я создал простой файлик с iframe и подгрузил в него другой простой файлик со строчкой текста и этим скриптом. Как видим, проверка проходит отлично.


21.06.17
Для просмотра сайта обновите браузер.