我有这个子窗口和一个条件,如果在窗口仍然打开且变量“myStatus”等于“处理”时再次单击“发送”,则该条件会阻止窗口重新加载。问题是,如果打开子窗口然后刷新父页面并再次单击“发送”,则 childPage 变量会丢失并允许重新加载子页面。有办法解决这个问题吗?谢谢。
var childPage = null;
$('#send').click(function(){
if(childPage && !childPage.closed && childPage.myStatus == "processing"){
alert('child window is open and processing');
}else{
childPage = window.open("test.html","send","width = 300,height=300");
}):
最佳答案
我遇到了同样的问题
我用双向通信解决了它
如果用户刷新父页面,则将此信息发送到子窗口。 子窗口将运行一个计时器,该计时器将继续检查父页面是否已重新加载。 重新加载父页面后,在父页面中创建子窗口的引用
代码:
在父窗口中
window.onbeforeunload =function (){
childPage.reconnect();
}
window.saveChildReference =function (ref){
childPage = ref;
}
在子窗口中
window.reconnect = function(){
var i =0;
var timer = setInterval(function(){
i++;
if(window.opener && window.opener.saveChildReference ){
window.opener.saveChildReference(window);
clearTimeout(timer );
}
if(i > 100){
clearTimeout(timer );// stop trying as parent may be closed.
}
}, 100);
};
关于javascript - 即使父窗口已重新加载,也停止子窗口重新加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15143477/