2013-06-03 28 views
0

有没有一种方法可以在ie8中通过弹出框使用postmessage()crossdomain。我希望在用户在弹出窗口中执行一个操作(登录)后在父页面上运行一个函数。 Facebook这样的网站如何做到这一点。跨域postmessage()通过ie8中的弹出框

+1

['postMessage'](https://developer.mozilla.org/en-US/docs/Web/API/window.postMessage)工作跨域,这就是要点。如果你创建一个弹出窗口,并保留对其“窗口”对象的引用,则可以发送消息。 –

+0

但跨域不起作用 – aWebDeveloper

+0

'postMessage'可能无法在IE8中正常工作:http://caniuse.com/#search=postMessage –

回答

2

IE8中的跨域PostMessagelimited to frame/iframe relationships,它不允许跨越制表符或窗口。

您可以通过websockets使用交换机服务器来模拟它的行为,通过例如Socket.io可以回退到旧浏览器的longpolling。然后,您可以通过交换台广播一条消息,其他选项卡或Windows可以订阅以了解登录成功/失败的时间。

+0

你的建议会有用吗?如果他们在不同的域名,我怀疑有一个“交换台服务器”,可以使用任何这些方法进行广播......它更有意义**不使用弹出窗口,使用模态对话框而不是iframe ,这样iframe可以沟通 – Ian

+0

为什么不呢?如果配置正确,所有可用的方法都可以从任何域访问。你所需要的只是一个简单的node.js服务器来传递消息,并且没有人在意跨域的边界。我同意使用这个弹出窗口只会在需要跨域**和** IE8兼容性时不必要地复杂化。对于Facebook和类似的东西并不重要,他们已经拥有了完整的实时基础设施。 –

+0

我想我只是需要一个解释:)我也可能误解了,所以无论如何,这听起来不错+1 – Ian