Javascript 如何从https弹出窗口重新加载http window.opener?
我有一个http窗口,可以打开一个安全的弹出窗口,向第三方网站提交表单。关闭弹出窗口后,我想重新加载打开程序,以便它反映表单提交的结果Javascript 如何从https弹出窗口重新加载http window.opener?,javascript,http,https,cross-domain,xss,Javascript,Http,Https,Cross Domain,Xss,我有一个http窗口,可以打开一个安全的弹出窗口,向第三方网站提交表单。关闭弹出窗口后,我想重新加载打开程序,以便它反映表单提交的结果 由于opener和popup使用不同的协议(http和https),因此我无法以简单的方式(window.opener.location.reload())完成。还有别的办法吗?我必须冒险进入JSONP吗?笨拙的方式:设置超时以检查打开的弹出窗口是否关闭 function checkClosed(){ if(new_win.closed){
由于opener和popup使用不同的协议(http和https),因此我无法以简单的方式(window.opener.location.reload())完成。还有别的办法吗?我必须冒险进入JSONP吗?笨拙的方式:设置超时以检查打开的弹出窗口是否关闭
function checkClosed(){
if(new_win.closed){
alert('Window was closed');
}
else{
window.setTimeout(checkClosed,1000);
}
}
new_win = window.open('about:blank');
window.setTimeout(checkClosed,1000);
笨拙的方式:设置超时以检查打开的弹出窗口是否关闭
function checkClosed(){
if(new_win.closed){
alert('Window was closed');
}
else{
window.setTimeout(checkClosed,1000);
}
}
new_win = window.open('about:blank');
window.setTimeout(checkClosed,1000);
我知道这是一个非常古老的问题,但我找到了一个更好的方法: 在弹出窗口中(当然,如果您控制它,至少在最后一页),您需要:
opener.postMessage('OK', window.location.protocol+'//'+window.location.host);
这将关闭弹出窗口,并允许您执行其他操作,例如通过Ajax更新数据或重新加载页面。我知道这是一个非常古老的问题,但我找到了一个更好的方法: 在弹出窗口中(当然,如果您控制它,至少在最后一页),您需要:
opener.postMessage('OK', window.location.protocol+'//'+window.location.host);
这将关闭弹出窗口,并允许您执行其他操作,如通过Ajax更新数据或重新加载页面。NB:event.origin必须与opener.postmessagen的第二个参数匹配b:event.origin必须与opener.postMessage的第二个参数匹配