Проверить, что страница загружена в 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 и подгрузил в него другой простой файлик со строчкой текста и этим скриптом. Как видим, проверка проходит отлично.