在我的网站上,我在新窗口中打开登录对话框:
window.open('mysite/Login/');
mysite/Login/
自动将我重定向到 OAuth 提供商。
OAuth 提供程序做了一些骗人的事情,然后使用有效凭据将我重定向回 mysite/Login/
。
现在是棘手的部分:我想告诉应用程序 (window.opener
) 登录已准备就绪。
我尝试在 mysite/Login
中返回以下 HTML:
<html><script>
window.opener.MyApp.proceedAfterLogin()
</script></html>
但这会引发错误
Login:2 Uncaught TypeError: Cannot read property 'MyApp' of null
所以window.opener
为空。我认为它不是通过重定向保留的;这个假设正确吗?我怎样才能达到同样的结果?
我可以将 JavaScript 对象放入 cookie 中吗? (我不这么认为,cookie只能存储文本,对吧?)
最佳答案
最简单的解决方案是将值存储为 localStorage,然后在 OAuth 完成时检索。
locationStorage.setItem('opener', JSON.stringify(window.opener));
然后,一旦 OAuth 完成,就执行此操作。
window.opener = JSON.parse(locationStorage.opener);
关于javascript - 跨重定向保留 window.opener 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37348377/