1) Определить, содержится ли я в iframe
if (window != window.top) {
// the page is inside an iframe
}
2) Если нет, перейдите, как указано выше.
навигация как выше
3) Если да, перемещаться только по фрейму?
Когда вы пишете window.location.href = 'http://www.google.com';
, вы перемещаетесь по содержимому iframe, а не по верхней странице. Если вы хотите перемещаться по верхней странице, вы можете сделать это только в том случае, если эта верхняя страница находится в том же домене, что и iframe, и вы можете использовать window.top.location.href
.
UPDATE:
В браузеры встроен механизм безопасности, который запрещает перенаправлять на сайты, которые устанавливают заголовок ответа X-Frame-Options: SAMEORIGIN
внутри фрейма. Это в случае с http://www.google.com
. Просто перейдите на этот сайт и посмотрите HTTP-заголовки ответа с помощью FireBug или панели инструментов разработчика, которую вы используете, и вы увидите этот заголовок. Вы не можете перенаправить на него, и вы получите следующее сообщение об ошибке:
Refused to display document because display forbidden by X-Frame-Options.
Это в основном механизм безопасности, реализованный некоторыми сайтами, авторы которых не хотели, чтобы вы встраивали их в iframe.