부모창 새로고침 하려고 합니다. 좀 가르쳐 주십시요...opener.location.reload
본문
새창에서
<script type="text/javascript">
function goaction(){
opener.location.reload();
}
</script>
이렇게 작성했을때는 너무 빨리 새로고침이 되어서 새창에서 수정한 내용이 부모창에서 반영이 되지 않더라구요 ..그래서 2초 정도 지연후 부모창을 새로고침을 하려고 하는데 아래와 같이 하니 안됩니다.
좀 틀린부분이 뭔지 가르쳐 주십시요...
<!---- 부모창 ----->
(새로 고침을 해야합니다.)
<!---- 새창 ----->
<button type="submit" class="btn btn-<?php echo $btn2;?> btn-sm" onclick="goaction()">완료</button>
<script type="text/javascript">
function goaction(){
setTimeout(opener.location.reload(); 2000); // 2초후 실행
}
</script>
답변 2
자식창에서 어떤 데이타를 처리했으면 서버측은 모두 갱신된 것이므로 원칙적으로 시간이 짧아도 부모창도 항상 새로운 자료가 나오는 것이 맞아요.
자식창의 자바스크립트도 서버측에서 처리가 끝난후 출력되는 것 이거든요.
문제가 되는 것은 새로고침 시간간격의 문제가 아니라 캐시일겁니다.
아래 코드같은 캐시무력화하는 코드를 쓰거나.
<meta http-equiv="Cache-Control" content="No-Cache"> - 캐쉬를 사용하지 않도록 정의합니다. <meta http-equiv="Pragma" content="No-Cache"> - 캐쉬가 되지 않게 하게 정의합니다.. ( 매번 새로고침 효과 )
혹은 PHP 에서 캐시 제어하는 헤더를 써보세요.
아래 같은 것을 때려넣어 보세요. 각각의 역활은 한번 공부해보세요.
session_cache_limiter('none');
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Content-Type: text/html;charset=" . $charset);
function 을 한 번 더 만들 어보세요