[javascript] 팝업을 열고 닫을 때 상위 페이지 새로 고침

JavaScript에서 window.open으로 팝업 창을 열 었는데,이 팝업 창을 닫을 때 상위 페이지를 새로 고침하고 싶습니다. (onclose 이벤트?) 어떻게 할 수 있습니까?

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



답변

window.opener ‘를 사용하여 부모 창에 액세스 할 수 있으므로 자식 창에 다음과 같이 작성합니다.

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


답변

팝업 창에는들을 수있는 닫기 이벤트가 없습니다.

반면에 창이 닫힐 때 true로 설정되는 closed 속성이 있습니다.

닫힌 속성을 확인하도록 타이머를 설정하고 다음과 같이 할 수 있습니다.

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); 

작동하는 Fiddle 예제를 참조하십시오 !


답변

자녀 페이지에 다음을 입력하십시오.

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

<body onbeforeunload="refreshAndClose();">

하지만 좋은 UI 디자인으로 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' />


답변

나는 이것을 사용한다 :

<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()''>

창이 닫히면 상위 창을 새로 고칩니다.


답변

window.open은 열린 URL이 동일한 출처 정책을 준수하는 경우 새로 생성 된 창에 대한 참조를 반환합니다. .

이것은 작동합니다.

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

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


답변

제 경우에는 상위 페이지에서 링크 버튼을 클릭하면 팝업 창을 열었습니다. 다음을 사용하여 자식을 닫을 때 부모를 새로 고치려면

window.opener.location.reload();

자식 창에서 자식 창을 다시 열었습니다 (보기 상태 때문일 수 있습니다. 내가 틀렸다면 수정하십시오). 그래서 부모 페이지를 다시로드하지 않고 동일한 URL을 할당하여 페이지를 다시로드하기로 결정했습니다.

팝업 창을 닫은 후 팝업이 다시 열리지 않도록하려면 도움이 될 수 있습니다.

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


답변

앱이 HTML5 지원 브라우저에서 실행되는 경우. postMessage 를 사용할 수 있습니다 . 거기에 주어진 예는 당신과 매우 유사합니다.