Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 打开弹出窗口并在关闭弹出窗口时刷新父页面_Javascript_Html_Javascript Events - Fatal编程技术网

Javascript 打开弹出窗口并在关闭弹出窗口时刷新父页面

Javascript 打开弹出窗口并在关闭弹出窗口时刷新父页面,javascript,html,javascript-events,Javascript,Html,Javascript Events,我按窗口打开了一个弹出窗口。在JavaScript中打开,我想在关闭此弹出窗口时刷新父页面。(onclose事件?)我如何才能做到这一点 window.open("foo.html","windowName", "width=200,height=200,scrollbars=no"); 弹出窗口中没有您可以收听的任何关闭事件 另一方面,当窗口关闭时,有一个closed属性被设置为true 您可以设置计时器来检查关闭的属性,并按如下方式执行: var win = window.open('fo

我按窗口打开了一个弹出窗口。在JavaScript中打开,我想在关闭此弹出窗口时刷新父页面。(onclose事件?)我如何才能做到这一点

window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");

弹出窗口中没有您可以收听的任何关闭事件

另一方面,当窗口关闭时,有一个closed属性被设置为true

您可以设置计时器来检查关闭的属性,并按如下方式执行:

var win = window.open('foo.html', 'windowName',"width=200,height=200,scrollbars=no");   
var timer = setInterval(function() {   
    if(win.closed) {  
        clearInterval(timer);  
        alert('closed');  
    }  
}, 1000); 

看这个

您可以使用“”访问父窗口,因此,在子窗口中编写如下内容:

<script>
    window.onunload = refreshParent;
    function refreshParent() {
        window.opener.location.reload();
    }
</script>

window.onunload=refreshParent;
函数refreshParent(){
window.opener.location.reload();
}

在您的子页面上,放置以下内容:

<script type="text/javascript">
    function refreshAndClose() {
        window.opener.location.reload(true);
        window.close();
    }
</script>

如果您的应用程序在支持HTML5的浏览器上运行。你可以用。这里给出的例子与你的很相似

window.open将返回对新创建窗口的引用,前提是打开的URL符合

这应该起作用:

function windowClose() {
    window.location.reload();
}

var foo = window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");
foo.onbeforeunload= windowClose;​
我用这个:

<script language='javascript'>
var t;
function doLoad() {
t = setTimeout("window.close()",1000);
}

</script>
<script type="text/javascript">
function refreshAndClose() {
    window.opener.location.reload(true);
    window.close();
}
</script>
<body onbeforeunload="refreshAndClose();" onLoad='doLoad()''>

变量t;
函数doLoad(){
t=setTimeout(“window.close()”,1000);
}
函数refreshAndClose(){
window.opener.location.reload(true);
window.close();
}

您可以通过parent命令(parent是窗口)进入主页面,在完成该步骤后,您可以使一切

    function funcx() {
        var result = confirm('bla bla bla.!');
        if(result)
            //parent.location.assign("http://localhost:58250/Ekocc/" + document.getElementById('hdnLink').value + "");
            parent.location.assign("http://blabla.com/" + document.getElementById('hdnLink').value + "");
    } 

您可以在父页面中使用以下代码

<script>
    window.onunload = refreshParent;
    function refreshParent() {
      window.opener.location.reload();
    }
</script>

window.onunload=refreshParent;
函数refreshParent(){
window.opener.location.reload();
}

在我的例子中,我在父页面中单击链接按钮打开了一个弹出窗口。 使用关闭子级时刷新父级

window.opener.location.reload();
在子窗口中导致重新打开子窗口(我猜可能是因为视图状态。如果我错了,请更正我)。 所以,我决定不在父级中重新加载页面,而是再次加载页面,并为其分配相同的url

为了避免关闭弹出窗口后再次打开弹出窗口,这可能会有所帮助

window.onunload = function(){
    window.opener.location = window.opener.location;};

试试这个

        self.opener.location.reload(); 
打开当前窗口的父窗口并重新加载该位置


以下代码将在关闭后刷新父窗口:

function ManageQB_PopUp() {
            $(document).ready(function () {
                window.close();
            });
            window.onunload = function () {
                var win = window.opener;
                if (!win.closed) {
                    window.opener.location.reload();
                }
            };
        }

我不想用定时器!还有其他想法吗?有点不切实际,但我认为使用计时器在所有浏览器中都会起到最好的作用。如果弹出窗口在关闭前有几个页面,这也是最好的解决方案,因为onunload事件只有在用户离开第一个页面后才会触发。我不知道window.opener,谢谢!我总是将调用者窗口放在孩子的contentWindow中的一个变量中:-/如果您不控制子页面上的JavaScript(例如OAuth流),则需要使用
setInterval
检查
popupWindow.closed
,就像@Zuul的解决方案一样。当弹出窗口关闭时,而不是当用户单击按钮刷新页面并关闭弹出窗口时window@gengkev,我知道OP希望将事件附加到窗口关闭,但我相信使用按钮是更好的UI设计。然而,我包含了这两个方面的代码。请告知。我使用了函数refreshAndClose(){window.opener.location.reload(true);}self.close();“否则,您无法在不同的窗口之间进行通信。”是错误的。尽管我推荐@Moses-1中的答案,但这种技术仍然是可行的。如果你举一个小例子,你甚至会得到+1;-)不要介意。但我不认为开窗器适合IE。我会试试看。@kay,在IE7和IE8中效果很好。很好,我以前不知道+1对于摩西。@ArMaN:,使用window.opener。您可以使用此功能测试您的环境。如果用户能够在打开的窗口中查看链接,则此功能将不起作用。我很确定在第一次加载目标URL之前会抛出一个卸载事件,因为您隐式地将其保留为空。(+1表示提及SOP)请检查:可能会帮助某人
        self.opener.location.reload(); 
function ManageQB_PopUp() {
            $(document).ready(function () {
                window.close();
            });
            window.onunload = function () {
                var win = window.opener;
                if (!win.closed) {
                    window.opener.location.reload();
                }
            };
        }