我正在开发一个站点间单点登录项目,并且遇到了一个相当小的问题。当用户注销“父”站点时,需要在包含“子”站点的弹出窗口中加载特定页面。但是,我无法存储对返回值的引用window.open(…)
,因为必须允许用户在注销之前在每个站点上导航到他们喜欢的任何位置。
如果我可以假设子站点始终打开,就像另一个window.open(…)
到同一个命名的窗口将更改其 URL。然而,弹出窗口cannot如果尚未打开(并非所有用户都有权访问子站点),则会导致出现。
我认为这给了我两个相互矛盾的场景。当用户访问子站点时:
- 用户登录到父站点。
- 用户单击子站点的链接
- 子站点出现在名为“child_popup”的窗口中。
- 用户在父站点中广泛浏览,忘记了子窗口的存在。
- 用户从父站点注销。
- 子弹出窗口被重定向到子站点的注销页面。
当用户没有或无法访问子站点时:
- 用户登录到父站点。
- 用户在父站点中广泛浏览。
- 用户从父站点注销。
- 不应出现任何弹出窗口!
所以我的局限性是:
- 我无法在 JS 中存储对窗口的引用,因为用户可以在访问子站点和注销之间导航到任意数量的页面。
- I have zero控制子网站的内容(我的雇主运营父网站)。
- 父站点无法转换为框架以提供“全局”JS 范围。 :-)
我无法在 Google 或 SO 上找到任何相关资源。有办法做到这一点吗?
是的,您可以,但须遵守一项重要限制。
它取决于以下行为:
- window.open 的前 2 个参数是 URL 和窗口名称
- window.open 返回对窗口的引用
- 如果已使用指定名称打开窗口,则返回对该窗口的引用而不是对新窗口的引用
- 如果 URL 为 NULL,现有窗口将不会导航到新页面
这意味着您可以获得对现有窗口的引用,而不会丢失窗口已打开的页面。然而,如果一个窗口doesn't以这个名字存在will被打开。
我们在以下位置使用了这种方法http://carbonlogic.co.uk/ http://carbonlogic.co.uk/但由于 Flash Player 问题,弹出窗口的内容目前无法正常工作
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)