반응형
부모창에서 자식 새창으로 submit 데이타를 보낼때 자식창에선 그것을 데이타 크기에 맞게
늘렸다 줄였다 할수있다. 이것은 프린트 공통 화면을 만들때 유용하게 쓰인다.
내용은 화면이 시작되고 나서 밑쪽에 initWindow 함수가 실행되게 된다.

<html>
<head>
#parse("common/common_head.vm")
<link href="${rc.contextPath}/css/ord.css" rel="stylesheet" type="text/class" />
<script language="JavaScript">
<!--
 // submit 넘어오는 html 데이타를 화면 크기에 맞게 배치해준다.
 function initWindow(win){
    var winBody = win.document.body;
    // 새창의 사이즈에 더해줄 marginWidth 와 marginHeight
    var marginHeight = parseInt(winBody.topMargin)+parseInt(winBody.bottomMargin);
    var marginWidth = parseInt(winBody.leftMargin)+parseInt(winBody.rightMargin);
    // 새창의 사이즈 설정
    var wid = winBody.scrollWidth + (winBody.offsetWidth - winBody.clientWidth) + marginWidth - 5;
    var hei = winBody.scrollHeight + (winBody.offsetHeight - winBody.clientHeight) + marginHeight + 17;
    // 사이즈 재조정
    win.resizeTo(wid, hei);
 }
 
 var initBody; // 프린트 실행전 내용이 담기는 공간
 function beforePrint(){
    initBody = document.body.innerHTML;
    document.body.innerHTML = resultPrint.innerHTML;
 }
 function afterPrint(){
    document.body.innerHTML = initBody;
 }
 function printArea(){
    window.print();
 }
 window.onbeforeprint = beforePrint; // 프린트 하기 이전의 내용실행 해서  body 의 내용을 바꾼다.
 window.obafterprint = afterPrint; // 프린트 후 함수를 실행하여 이전에 저장해놨던 정보로 내용을 바꾼다.
//-->
</script>
</head>
<body>
 <table width="100%" border="0" cellspacing="0" cellpadding="10">
   <tr>
     <td valign="top">
     <DIV id="resultPrint">
      $!{print}
     </DIV>
     </td>
   </tr>
   <tr>
    <td><a href="javascript:printArea();"> 프린트 하기 </a></td>
     </tr>
 </table>
 <script language='javascript'>
 <!--
  initWindow(this);
 //-->
 </script>
</body>
</html>

Posted by 1010