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

ArM*_*MaN 88 html javascript javascript-events

我在JavaScript打开一个弹出窗口通过window.open,我想刷新父页面当我关闭这个弹出窗口.(onClose事件会?)我怎么能做到这一点?

window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");
Run Code Online (Sandbox Code Playgroud)

Mor*_*ole 219

您可以使用' window.opener ' 访问父窗口,因此,在子窗口中写下以下内容:

<script>
    window.onunload = refreshParent;
    function refreshParent() {
        window.opener.location.reload();
    }
</script>
Run Code Online (Sandbox Code Playgroud)

  • 如果您不在子页面上控制JavaScript(例如OAuth流程),那么您需要使用@zuul解决方案中的`setInterval`来检查`popupWindow.closed`. (3认同)

Zuu*_*uul 33

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

另一方面,当窗口关闭时,有一个关闭的属性设置为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); 
Run Code Online (Sandbox Code Playgroud)

看到这个工作小提琴的例子!


Ray*_*eng 14

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

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

<body onbeforeunload="refreshAndClose();">
Run Code Online (Sandbox Code Playgroud)

但作为一个好的UI设计,你应该使用Close,button因为它更友好.见下面的代码.

<script type="text/javascript">
    $(document).ready(function () {
        $('#btn').click(function () {
            window.opener.location.reload(true);
            window.close();
        });
    });
</script>

<input type='button' id='btn' value='Close' />
Run Code Online (Sandbox Code Playgroud)