Подтвердить что ты не робот

Обнаружить внедрение iFrame в Javascript

У меня есть приложение, на котором есть определенная страница - позвоните ему Страница A. Страница A иногда является страницей верхнего уровня, но также иногда внедряется как iframe внутри страницы B. Все страницы поступают с одного и того же сервера и нет проблем между доменами.

У меня есть greasemonkey script, который работает на странице A. Как greasemonkey script обнаруживает, находится ли страница A в контексте iframe или нет?

4b9b3361

Ответ 1

Глядя на длину кадра, ломается вообще, если сама страница А имеет фреймы (я знаю, что это может быть не так для этого конкретного экземпляра). Более надежным и значимым тестом будет:

if (window!=window.top) { /* I'm in a frame! */ }

Ответ 2

Предикат

(window.parent.frames.length > 0)

расскажет вам, что вы хотите.

Ответ 4

Как указано выше, принятое решение не работает в IE8. Кроме того, проверка window.parent.frames.length может вызвать исключение междоменной области.

Вместо этого я смог достичь этого с помощью var isInIFrame = top.location != self.location - он работает в IE8 и не вызывает нарушения междоменной области, если вы не пытаетесь прочитать содержимое top.location.

Ответ 5

Используйте window.frameElement и проверьте, не является ли он нулевым, и если его nodeName является "IFRAME".