관련 내용을 찾다가 발견했습니다.
정리가 잘돼있는 포스팅이라 걷어왔습니다.
원작자가 원하시지 않는다면 지울게요.^^;;;
아래는 원문을 잘라왔습니다.
출처 : http://bnufactory.com/blog/textyle/19783
------------------------------------------------------------------
다른 도메인의 iframe 페이지에 자바스크립트로 접근이 불가능합니다.
자바스크립트가
샌드박스상에서 동작하고, 보안상 막혀있는 부분이죠.
예전에는 iframe페이지의 DOM 접근도 가능했던 것 같은데 어느샌가
막혔죠.
어느 시점인지 모르겠네요. ^^;
다른 도메인간 iframe의 크기를 자동으로 맞춰주기 위해서라던가
페이지 내의 변수 등을
가져오기 위해 접근해야 하는 경우가 있습니다.
이 경우 제한적으로 iframe 페이지를 참조할 수 있는 방법이
있습니다.
iframe로 불려오는 페이지의 편집권한이 있어야만하고, 무진장
제한적이지만 말이죠;
(Ajax, falsh를 사용시 크로스도메인 설정과는 별개입니다.)
iframe의 크기 자동조정을 위한 예로 들어 설명하겠습니다.

[▲ A사이트에서 B사이트의 페이지를 iframe으로 로드]
우선, B페이지의 크기를 구해야하는데 A페이지에서는
자바스크립트로 접근이 불가능합니다.
iframe 요소의 크기를 가져와 봤자, iframe 태그로 설정한 크기를 구해올
뿐
B페이지의 실제 크기를 구해오지는 못합니다.
B페이지의 크기를
구하려면 트릭을 사용해야 합니다.
우선 요약하자면, B페이지안에서 A사이트의 또
다른 C페이지를 로드하는 겁니다.

[▲ B페이지안에 A사이트와 동일
도메인의 C페이지 로드]
위와 같이 A와 C는 같은
도메인상의 페이지이어야 합니다.
하지만, A나 C에서
B를 직접 참조할 수 없기는 마찬가지입니다.
예전에 흔히 알려진
것으로는 C페이지에서 B페이지의
자바스크립트 제어가 가능하다는 건데
이건 보안버그로 판단되었는지 고쳐진 부분이라 이것도 더 이상 접근되지
않게되었죠.
그럼 어떻게 하느냐?
B에서 값을 던져
주면 됩니다.
물론, B에서도 A나
C에 직접적으로 접근이 불가하므로,
B에서
C페이지의 URL에 파라미터로 값을 넘겨주도록 해야
합니다.
B에서
자바스크립트로 자신의 페이지 크기를 구한 다음,
C페이지의 URL에 그 크기를 파라미터로 붙여서 로드해야
합니다.
A도메인/C페이지.html?width=500&height=300
위와 같이 말이죠.
이걸로 준비는 끝나고 간단히 처리만 하면 됩니다.
C페이지에서
자신이 파라미터를 받아서 window.top.document로 A페이지에 접근이 가능합니다.
A와
C는 동일 도메인이므로 DOM 접근도 가능하고, 함수나 변수 참조도
가능합니다.
끝~
iframe 크기 조정을 위한 페이지 크기 뿐 아니라 변수 등 여타의 값도
가능할테구요.
색을 바꿔하느라 조잡하고 설명이 부드럽지 못했을지 모르겠습니다.
URL의 파라미터로 값을
넘기는 것이라 상당히 제한적이기도 합니다.



Prev
Rss Feed