答案:不可能实现。不同的window对象,相当于不同的应用程序。
能实现的吧
可以用window.opener访问之前的页面,然后调用一下之前页面的刷新方法~
那不是又打开一个页面,有没有办法直接刷新呢
@小欢乐: 你登录页面就是新打开的呀~在这个页面调用window.opener能访问之前的那个页面~
@幻天芒: google半天,也不知道这是什么原因
Blocked a frame with origin "..." from accessing a cross-origin frame
大侠赐教啊
@小欢乐: 不是吧,你还跨域了???
如果你要的是刷新用户在另外一个浏览器窗口打开的页面,那是不可能的``
如果你是说登录成功后,把当前页刷新成登录之前的页面,那就是一个跳转解决的事情
不是两个浏览器,是一个浏览器的两个标签页。还有,不是做跳转,是关闭当前登录页,然后刷新之前的页面(弹出登录页面的那一个)
@小欢乐: 1个浏览器的2个标签页,就是2个窗口
可以在点击登录之后,开启一个timer轮询检查登录状态,检测到登录成功之后刷新页面
怎么刷新是关键,我做的时候好像提示跨域了
Blocked a frame with origin "..." from accessing a cross-origin frame
@小欢乐: 我的意思是在A页面点击登录之后,弹出B登录页面,同时在A页面上轮询检查登录状态。如果跨域的话先要保证你的站点支持SSO,然后jsonp就可以解决。
window.history.go(-1)
你可以换个思路这样弄,点击登录按钮,在本窗口打开登录页,然后在登录页取到来源的URL,然后在登录页登录成功之后,跳转至来源URL。这样也是可以的。
window.opener.location.reload()
-------------------------------------------
我建议弄成弹出框登录,而不是弹出新页面登录
换个思路吧,你可以点击登录按钮,然后弹出一个登录框,登录成功之后刷新当前页面.
赞同弹窗口的建议
用跳转的方式!登录表单的action="isLogin",例如isLogin这样一个servlet的controller,进行的登录处理,如果获取对象正确,登录成功,就有response.setHeader("refresh","2;url=main.jsp");//2秒后跳转main.jsp界面的一个结果。
你这样做会不会把用户吓到、、、
不跨域的话很简单,你父页面用超链接打开登陆页,给登陆页加个onunload事件,调用window.opener里面的方法刷新父页面。
跨域的话,就难了。
window.opener.reload()是可以的