Есть ли какой-нибудь умный способ для Javascript узнать, что он выполняется в iFrame? - PullRequest
4 голосов
/ 27 мая 2010

Мне нужен скрипт для динамического изменения его функционирования, если страница встроена через iFrame.

Сценарий будет вызываться в источнике iFrame из тега <script.. и не будет встроенным JavaScript.

Заранее спасибо!

Обновление: Дэвид предоставил ответ, который работает в Firefox и Chrome, но не работает в IE8, любая помощь с этим приветствуется:)

if (window !== top) {
  alert('im in an frame');
}

Обновление2: По-видимому, это дубликат вопроса , правильный ответ:

if (top === self) { alert('parent'); } else { alert('iframe'); }

Кредит идет на Грег

Ответы [ 3 ]

3 голосов
/ 27 мая 2010
if (window != top) {
  // In a frame of some kind
}
0 голосов
/ 27 мая 2010
if (top === self) { alert('parent'); } else { alert('iframe'); }  

Работает отлично! Кредит идет на Грег

0 голосов
/ 27 мая 2010

IE не возвращает true для оператора эквивалентности (===) для двух ссылок на один и тот же объект окна, даже в окне верхнего уровня, если (window === top) возвращает false.

Но более простой оператор равенства if (window == top) возвращает true во всех браузерах, если объект является верхним окном, и false, если это iframe, содержащийся в окне.

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