2008-11-13 3 views
0

У меня есть страница P1 загрузка с сайта S1, которая содержит iframe. Этот iframe загружает страницу P2 с другого сайта S2. В какой-то момент P2 хотел бы закрыть окно браузера, содержащее P1, загруженный из S1. Конечно, поскольку P2 загружается с другого сайта, он не может просто сделать parent.close().JavaScript: закрывающее окно из iframe

У меня есть полный контроль над P1 и P2, поэтому я могу добавить код JavaScript как для P1, так и для P2 по мере необходимости. Предложения о том, как разрешить это?

ответ

1

Не могу, я боюсь. JavaScript из iframe, загружаемого на другой сайт, затем тот, который он получает, строго запрещен из-за проблем с безопасностью.

Однако, если IFrame направлен на тот же сайт, вы можете получить к нему нравится:

<iframe name = "frame1" src = "http://yoursite"> 
</iframe> 

<script type = "text/javascript"> 
    alert(window.frames["frame1"].document); 
</script> 
0

Если они происходят из того же домена, вы можете изменить безопасность-ограничение, чтобы позволить модификацию между суб- домены.

set document.domain = "domain.com"; // на обеих страницах, и им разрешено изменять eachother.

Возможно, это просто установить их в фиктивный домен, не пробовал это или просто просто «.com» или что-то в этом роде.

+0

document.domain позволяет вам «перемещаться вверх» из вашего текущего домена. Например. от «sub.domain.example.com» или «sub.example.com» до «example.com». Однако вы не можете установить его в .com. Кроме того, вы можете установить значение только один раз. – Josh 2008-11-13 13:42:03

0

Похоже, что this guy получил перекрестный домен JavaScript, работающий между фреймами.

0

Вы можете использовать Flash для этого. Отправьте пользователя на новую страницу верхнего уровня, которую вы контролируете с помощью URLRequest с целью _top, и на этой странице есть javascript, который делает window.close().

Смежные вопросы