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