2013-06-03 2 views
0

Есть ли способ использовать postmessage() crossdomain через popup in ie8. Я хочу запустить одну функцию на родительской странице после того, как пользователь выполнит действие (логин) во всплывающем окне. Как делают такие сайты, как facebook.cross domain postmessage() через popup in ie8

+1

['postMessage'] (https://developer.mozilla.org/en-US/docs/Web/API/window.postMessage) работает в кросс-домене, это и есть точка. Если вы создадите всплывающее окно и сохраните ссылку на его объект 'window', вы можете отправить его сообщения. –

+0

, но перекрестный домен не работает – aWebDeveloper

+0

'postMessage' может не работать должным образом в IE8: http://caniuse.com/#search=postMessage –

ответ

2

Кросс-домен PostMessage в IE8 - limited to frame/iframe relationships, не разрешено пересекать вкладки или окна.

Вы можете имитировать свое поведение, используя сервер коммутатора через веб-порты, с возвратом в longpolling для старых браузеров через, например, Socket.io. Затем вы передавали сообщение через коммутатор, чтобы другая вкладка или окна могли подписаться, чтобы знать, когда логин преуспел/не удалось.

+0

How будут ли ваши предложения работать вообще? Если они находятся в разных доменах, я сомневаюсь, что есть один «сервер коммутаторов», который может транслироваться с использованием любого из этих методов ... У него больше смысла ** не использовать всплывающее окно, вместо этого использовать модальное диалоговое окно с iframe , так что iframe может связываться – Ian

+0

Почему бы и нет? Доступ к любым доступным методам можно получить из любого домена, если он правильно настроен. Все, что вам нужно, это простой сервер node.js, передающий сообщения, и никто не заботится о том, какие границы домена пересекаются. Я согласен, что всплывающее окно для этого только усложняет вопросы, если требуется совместимость между доменами ** и ** IE8. Для Facebook и т. П. Это не имеет значения, они уже имеют всю инфраструктуру реального времени. –

+0

Я думаю, мне просто нужно объяснение :) Я также, возможно, неправильно понял, так или иначе, это звучит довольно хорошо +1 – Ian