iframe안에서 바깥 element 제어하기
iframe안에 있는 요소로 iframe 밖에 있는 요소를 제어하는 방법입니다.
iframe안에 있는 요소로 iframe 밖에 있는 요소를 제어하는 방법입니다.
예제로 쓰일 파일
(1) parent.html -> iframe을 포함하는 페이지
(2) child.html -> iframe에 표시되는 페이지
여기서는 iframe안에 나타나는 child.html의 버튼을 클릭하면 parent.html의 "Hello World!"가 "Goodbye!"로 바뀌는 코드를 소개합니다.
우선 parent.html의 코드입니다
<!DOCTYPE HTML>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
</head>
<body>
<p>Hello World!</p>
<iframe src="child.html" width="500px" height="500px"></iframe>
</body>
</html>
child.html의 코드입니다.
<!DOCTYPE HTML>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script>
$(function() {
$(document).on("click", "#change", function() {
var target = $("p", window.parent.document);
target.html("Goodbye!");
});
});
</script>
</head>
<body>
<button id="change">Change to Goodbye!</button>
</body>
</html>
핵심은 var target 부분의 "window.parent.document" 입니다. 해석하면 iframe창의 parent창의 document, 즉 parent.html의 document라는 뜻이됩니다. 앞에 "p"는 parent.html의 document안에 있는 <p>
요소를 선택한다는 뜻입니다. target이란 변수에 오브젝트를 지정해주었으니 이젠 원하는 function으로 원하는 제어를 해주시면 됩니다 : )