междоменная проблема связи iFrames - PullRequest
2 голосов
/ 02 апреля 2010
  • У меня есть страница A, содержащая 2 дочерних фреймов, называемых B и C.
  • A и B находятся в разных доменах.
  • При нажатии кнопки в B я хотел бы изменить URL-адрес C.

На основании закона III Майкла Махемхоффа это должно работать, но на самом деле это не так (ошибка безопасности js).

Вот код JS в B:

window.parent.frames['C'].location.href = "http://random.url";

Ответы [ 2 ]

3 голосов
/ 02 апреля 2010

Это не работает, потому что кадр B не может получить доступ к коллекции frames на странице A.

Я не могу придумать никакого обходного пути (кроме настройки document.domain)

0 голосов
/ 04 апреля 2010

в случае, если страница и фрейм не находятся в одном домене, вам придется использовать postmessage , который является частью html5, и работает во всех современных браузерах (включая IE8) .

если вам нужна поддержка старых браузеров (в частности, IE6 / 7), вы можете использовать плагин jQuery postmessage (который прозрачно прибегает к некоторой хорошей хитрости хэш-тегов для старых браузеров).

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