Междоменный код JavaScript с дочерними поддоменами - PullRequest
5 голосов
/ 03 марта 2011

У меня есть две настройки веб-приложений:

Дэвид .example.com и Джон .example.com

Дэвид открывает новое окноДжону:

window.open('john.example.com');

Теперь Джон хотел бы вернуть элемент ввода обратно на Дэвида:

$("#input", window.opener.document).val("Hello David.");

Моя проблема в том, что это не работает в большинстве современных браузеров из-за перекрестногобезопасность сценариевЯ также пытался установить document.domain для разных комбинаций доменов как на Дэвиде, так и на Джоне, но безуспешно.

Единственный раз, когда это работает, это если Джон включен на example.com и для обоих document.domain установлено значениеexample.com.Тем не менее, example.com является нашим основным веб-сайтом и недоступен в качестве решения.

Так есть ли способ, которым я могу сделать приведенный выше пример, пока это решение работает во всех современных браузерах, обеспечивающих безопасность?

Примечания

  • Я управляю example.com и всеми его поддоменами.
  • Дэвид и Джон являются отдельными веб-приложениями и не могут быть размещены натот же поддомен.

Ответы [ 2 ]

8 голосов
/ 03 марта 2011

Вы должны быть в состоянии сделать это, если вы установили document.domain в обеих DOM.

document.domain = location.host.replace(/^.*?([^.]+\.[^.]+)$/g,'$1');

Зачислено на имя Мартина Йесперсена

0 голосов
/ 03 марта 2011

Вы всегда можете использовать iframes для связи между доменами и отправлять сообщения через hashbangs. См. this для примера. Это в основном работа таких вещей, как Facebook Connect. Если одно приложение открывает другое окно, я думаю, вы можете сделать это и с обычными окнами.

...