728x90
먼저 결과물
이제 소스
부모창 html
<div class="page-header">
<h1>window 객체 테스트<small>부모창</small></h1>
<P>자식창에서 전달 받은 값을 화면에 뿌려주고 자식창을 닫음</P>
</div>
<button class="btn btn-primary" onclick="openWindow()">새창열기</button>
<pre id="inputPre"></pre>
부모창 js (봐둘것 : window.함수명 )
var popup;
function openWindow() {
console.log("openWindow");
popup = window.open('/test4', 'test', 'width=1024,height=700','_blank');
};
window.call = function (data) {
console.log("자식창에서 호출");
console.log(data);
var msg = '자식창에서 입력한 값 :\n' + data;
$('#inputPre').html(data);
};
자식창 html
<div class="page-header">
<h1>window 객체 테스트<small>자식창</small></h1>
<P>input 창에 텍스트 입력 후 버튼을 누르면 부모창에 있는 함수를 호출하고 텍스트를 넘김</P>
</div>
<input type="text" id="sendMsg">
<button class="btn btn-primary" onclick="callParent()">부모창 함수 호출</button>
자식창 js (봐둘것 : opener.함수명)
function callParent () {
console.log("부모창에 있는 함수 call 호출");
var msg = $('#sendMsg').val();
if (msg == '') {
alert('input창에 텍스트를 입력해주시기 바랍니다.');
return;
}
opener.call(msg);
window.close();
};
//enter키 누르면 callparent 함수 실행 되도록
$('#sendMsg').bind('keydown keypress', function (e) {
if (e.which === 13) {
callParent();
}
});
window.함수명 으로 함수를 하나 만들고
해당 소스에서 팝업을 띄운다음
팝업창에서 자신을 연 부모창에 선언된 함수를 사용할 수 있다.
부모창에 window.a = function () {} 으로 만들어 놨으면
팝업창에선 opener.a() 로 부모창에 있는걸 실행 할 수 있다.
이외에 부모창에서 입력된 값을 자식창에 가져오거나 아니면 반대로 가져오거나 등 방법은 많은데
생각보다 사용하기가 까다로운듯 하다.
반응형
'JavaScript' 카테고리의 다른 글
[JavaScript] Uncaught TypeError: Assignment to constant variable. (0) | 2021.03.23 |
---|---|
[JavaScript] Uncaught SyntaxError: Missing initializer in const declaration (0) | 2021.03.23 |
[JavaScript] 정규식 (0) | 2020.01.03 |
[JavaScript] 클로저 (0) | 2019.12.27 |
[JavaScript] 라디오버튼(radio button) 값 가져오기 등 (0) | 2019.08.21 |