3

我正在为书签创建一个登录流程,并且我想避免执行重定向流程,因为它会引起其他一些并发症。因此,我正在寻找一种在同一域的选项卡或弹出窗口与在新选项卡或弹出窗口中用作 window.opener 的内部 iFrame 之间进行通信的方法。

在其他浏览器中,这可以通过 window.opener.postMessage 来完成,但在 IE8+ 中,这在窗口之间是不允许的,只能在 iFrame 之间进行,所以当然在典型的方式中,IE 需要特殊处理,因为它们无法跟随标准或预期行为。

在其他几次尝试中,我尝试了各种方法,我可能仍会尝试 easyXDM,但我希望使用更轻量的代码,而不是将另一个库包含到书签中,我最终想通过谷歌的闭包压缩器对其进行压缩。

我试过:
window.opener.postMessage()- 在选项卡之间的 IE8 中不起作用

window.opener.location.href- 工作不可靠

window.opener.someFunction()- 不适用于所有功能?为什么?

现在有点工作的是通过localStorage.authToken在子窗口/选项卡中设置,然后在父/打开器中有一个
setInterval(function(){checkToken(localStorate.authToken)},3000);

更新
我找到了一个合理的解决方案
http://www.sfpeter.com/2008/03/communication-between-browser-windows-with-jquery-my-new-plugin/

SFPeter 的这种方法在每个页面上设置了一个小的隐藏表单,然后为每个页面使用事件消息。它适用于相同的域请求,并且恰好在 IE8+ 上的窗口和选项卡之间工作。作为传递的一部分,它似乎确实在正文上发出了一个点击事件,在某些情况下可能需要忽略它。

4

0 回答 0