๐ ๋ถ๋ชจ์ฐฝ ↔ ์์์ฐฝ ์๋ก ๊ฐ ์ ๋ฌํ๊ธฐ
๋ถ๋ชจ์ฐฝ์์ ์์์ฐฝ์ผ๋ก ๊ฐ ์ ๋ฌํ๊ธฐ
์๋ฐ์คํฌ๋ฆฝํธ์์ โwindow.open()์ ์ด์ฉํ๋ฉด ํ์
์ฐฝ์ ๋์ธ ์ ์๋ค. ์ด๋ ํ์
์ฐฝ์ ์์์ฐฝ, ํ์
์ ๋์ฐ๋ ์ฐฝ์ ๋ถ๋ชจ์ฐฝ์ด ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์์์ฐฝ๊ณผ ๋ถ๋ชจ์ฐฝ๊ฐ์๋ ์๋ก ๊ฐ์ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ค.
๋ถ๋ชจ์ฐฝ์์ ์์์ฐฝ์ ์ ๊ทผํ๋ ค๋ฉด, ์ฐ์ window.open()์ ํตํด ์ป์ ํ์
์ฐฝ ๊ฐ์ฒด๋ฅผ ๋ณ์์ ๋ด๊ณ ๊ทธ ๋ณ์๋ฅผ ํตํด ์ ๊ทผํ๋ฉด ๋๋ค.
let openWin = window.open("Child.html");
openWin.document.getElementById("cInput").value = "์ ๋ฌํ๊ณ ์ ํ๋ ๊ฐ";
โ
Parent.html
<!DOCTYPE html>
<html>
<head>
<title>Parent</title>
</head>
<body>
<br>
<b><font size="5" color="gray">๋ถ๋ชจ์ฐฝ</font></b>
<br><br>
<input type="button" value="์์์ฐฝ ์ด๊ธฐ" onclick="openChild()">
<br>์ ๋ฌํ ๊ฐ : <input type="text" id="pInput">
<input type="button" value="์ ๋ฌ" onclick="setChildText()">
<script type="text/javascript">
let openWin;
function openChild() {
// window.name = "๋ถ๋ชจ์ฐฝ ์ด๋ฆ";
window.name = "parentForm";
// window.open("openํ window", "์์์ฐฝ ์ด๋ฆ", "ํ์
์ฐฝ ์ต์
");
openWin = window.open("Child.html", "childForm", "width=570, height=350, resizable = no, scrollbars = no");
}
function setChildText(){
openWin.document.getElementById("cInput").value = document.getElementById("pInput").value;
}
</script>
</body>
</html>
[์์์ฐฝ ์ด๊ธฐ]๋ฅผ ํด๋ฆญํ๋ฉด openChild() ํจ์๊ฐ ์คํ๋๋ฉฐ ์์์ฐฝ์ด ์ด๋ฆฐ๋ค. ๊ทธ๋ฆฌ๊ณ [์ ๋ฌ] ๋ฒํผ์ ํด๋ฆญํ๋ฉด setChildText()๊ฐ ์คํ๋๋ฉฐ, ํ์
์ฐฝ์ dom์ผ๋ก ์ ๊ทผํ ์ ์๊ฒ ๋์ด ์์์ฐฝ์ผ๋ก ๊ฐ์ด ์ ๋ฌ๋๊ฒ ๋๋ค.
โ
Child.html
<!DOCTYPE html>
<html>
<head>
<title>Child</title>
</head>
<body>
<br>
<b><font size="5" color="gray">์์์ฐฝ</font></b>
<br><br>
<input type="text" id="cInput"><br><br>
<input type="button" value="์ฐฝ๋ซ๊ธฐ" onclick="window.close()">
</body>
</html>
์์์ฐฝ์์ ๋ถ๋ชจ์ฐฝ์ผ๋ก ๊ฐ ์ ๋ฌํ๊ธฐ
๊ฑฐ๊พธ๋ก ์์์ฐฝ์์ ๋ถ๋ชจ์ฐฝ์ผ๋ก ๊ฐ์ ์ ๋ฌํ๋ ๊ฒ์ ์์ ๊ณผ์ ์ ๋ฐ๋๋ก ์ฒ๋ฆฌํ๋ฉด ๋๋ค.
์ด๋ ์์์ฐฝ์์ ๋ถ๋ชจ์ฐฝ์ ์ ๊ทผํ๋ ค๋ฉด window.opener ๊ฐ์ฒด๋ฅผ ์ด์ฉํด์ ์ ๊ทผํด์ผ ํ๋ค. (window ๋ ์๋ต ๊ฐ๋ฅ)
opener ๊ฐ์ฒด๋ฅผ ์ด์ฉํด ๋ถ๋ชจ์ฐฝ์ DOM์ ์ ๊ทผํ์ฌ ํน์ element์ ๊ฐ์ ๋ด์ผ๋ฉด ๋๋ค.
opener.document.getElementById("pInput").value = "์ ๋ฌํ๊ณ ์ ํ๋ ๊ฐ";
Child.html
<!DOCTYPE html>
<html>
<head>
<title>Child</title>
</head>
<body>
<br>
<b><font size="5" color="gray">์์์ฐฝ</font></b>
<br><br>
<input type="text" id="cInput"> <input type="button" value="์ ๋ฌ" onclick="setParentText()">
<br><br>
<input type="button" value="์ฐฝ๋ซ๊ธฐ" onclick="window.close()">
<script>
function setParentText(){
opener.document.getElementById("pInput").value = document.getElementById("cInput").value
}
</script>
</body>
</html>
์์์ฐฝ์์ ๋ถ๋ชจ์ฐฝ์ ๊ฐ ๊ฐ์ ธ์ค๊ธฐ
window.opener ๊ฐ์ฒด๋ฅผ ๋์ฑ ์์ฉํด์ ์ด๋ฒ์ ๊ฐ์ ธ์ค๋ ๋์๋ ๊ตฌํ์ด ๊ฐ๋ฅํ๋ค. ์์ ์ ๋ฌ ๊ธฐ๋ฅ์ ์ดํดํ์์ผ๋ฉด ๊ฐ์ ธ์ค๋ ๊ธฐ๋ฅ์ ๊ตฌํํ๋๋ฐ ์ด๋ ต์ง ์์ ๊ฒ์ด๋ค.
const value = opener.document.getElementById("pInput").value;
Child.html
<!DOCTYPE html>
<html>
<head>
<title>Child</title>
</head>
<body>
<br>
<b><font size="5" color="gray">์์์ฐฝ</font></b>
<br><br>
<input type="text" id="cInput"> <input type="button" value="๊ฐ์ ธ์ค๊ธฐ" onclick="setParentText()">
<br><br>
<input type="button" value="์ฐฝ๋ซ๊ธฐ" onclick="window.close()">
<script>
function setParentText(){
document.getElementById("cInput").value = opener.document.getElementById("pInput").value;
}
</script>
</body>
</html>
๋ถ๋ชจ์ฐฝ์์ ์์์ฐฝ์ ๊ฐ ๊ฐ์ ธ์ค๊ธฐ
ํฌ์คํ ์ด๋ฐ์ ๋ถ๋ชจ์ฐฝ์์ ์์์ฐฝ์ผ๋ก ์ ๋ฌํ๋ ์ฝ๋๋ฅผ ๋ค์ง๊ธฐ๋ง ํ๋ฉด ๋๋ค.
const value = openWin.document.getElementById("cInput").value;
Parent.html
<!DOCTYPE html>
<html>
<head>
<title>Parent</title>
</head>
<body>
<br>
<b><font size="5" color="gray">๋ถ๋ชจ์ฐฝ</font></b>
<br><br>
<input type="button" value="์์์ฐฝ ์ด๊ธฐ" onclick="openChild()">
<br>์ ๋ฌํ ๊ฐ : <input type="text" id="pInput">
<input type="button" value="์ ๋ฌ" onclick="setChildText()">
<input type="button" value="๊ฐ์ ธ์ค๊ธฐ" onclick="getChildText()">
<script type="text/javascript">
let openWin;
function openChild() {
// window.name = "๋ถ๋ชจ์ฐฝ ์ด๋ฆ";
window.name = "parentForm";
// window.open("openํ window", "์์์ฐฝ ์ด๋ฆ", "ํ์
์ฐฝ ์ต์
");
openWin = window.open("Child.html", "childForm", "width=570, height=350, resizable = no, scrollbars = no");
}
function setChildText(){
openWin.document.getElementById("cInput").value = document.getElementById("pInput").value;
}
function getChildText(){
document.getElementById("pInput").value = openWin.document.getElementById("cInput").value;
}
</script>
</body>
</html>