2010-04-22 7 views
5

페이지에 있지만이 프레임 외부에있는 스크립트를 사용하여 iframe 내용 (src와 같은 속성뿐 아니라)을 읽고 편집 할 수 있습니까? 소스가 다른 사이트 출신이라면 큰 성격의 홀이 될 수는 없지만 같은 출처의 다른 컨텐츠에 대해서만 작동하는지 묻습니다. iframe이 내용이 동일한 도메인에있는 경우,자바 스크립트와 같은 원본 iframe

+0

나는이 링크라고 생각 그것 모두 [Scripting Iframes - 튜토리얼 및 예제] (http://www.dyn-web.com/tutorials/iframes/) – mplungjan

답변

0

당신은 frames.myiframe.getElement...

0

브라우저는 같은 도메인에없는 내용에 iframe/부모 내용에 대한 액세스를 제한을 사용하여 액세스 할 수 있습니다. 동일한 도메인의 요청 인 경우 window.parent 또는 myiframe.document.getElementById

3

을 통해 콘텐츠에 액세스 할 수 있습니다. 예, iframe 및 상위 페이지의 위치가 동일한 호스트 (동일한 출처 정책) 인 경우이 작업을 수행 할 수 있습니다. 이 작업을 수행하게됩니다 브라우저를 보장하기 위해

, 당신은 부모 페이지와 iframe에

document.domain = "example.com" 

를 사용할 수 있습니다. (즉, subdomain.example.com를 기록하고 example.com을 다른)

이 (하면 iframe 상위 페이지) 수행하기위한 돔 방법 :

document.getElementById("myiframe").contentWindow.document.getElementById("divinframe").innerHTML = "I'm on the inside."; 

document.getElementById("myiframe").contentWindow.someFunctionInsideIframe();

contentWindow는 대답은하고 대부분의 현대 브라우저에서 작동합니다. 즉, 크롬, ie7 + 등입니다.

다른 방법 (iframe을 상위 페이지로 이동) :

top.document.getElementById("DivInTopParent") 
4

이미 동일한 도메인에서로드 iframe을과 상호 작용하는 많은 내용이 무엇인지에 추가 :하려고하는 페이지만큼

이 브라우저는 사용자가 iframe (또는 프레임)와 상호 작용 할 수 상호 작용을 수행하고로드 한 페이지에는 동일한 document.domain이 있습니다.

document.domain을로드 한 호스트의 접미어로 설정할 수 있습니다. 예 : 당신이 blog.fred.com에서로드 페이지를하고 일부 서비스라고 jsonservice.fred.com와 상호 작용하고자하는 경우, 두 페이지 하나와 상호 작용 할 수있을 것입니다에서 자바 스크립트 전에

document.domain = 'fred.com'; 

을해야 할 것 다른 하나. 당신이 궁금해 경우

브라우저는

0

이 정확히 클라이언트 측/자바 스크립트 해결책이 아니다,하지만 ... 당신은 '.COM'로 document.domain을 설정하는 것을 허용하지 충분히 영리이 이 문제를 해결하는 데 도움이되었습니다.IE에 대한

Content-Security-Policy: frame-ancestors 'self' example.com *.example.com 

추가 한 :

당신은 iframe이 페이지에 대해 다음 중 하나를 전송하는 대신 존재하는 경우 X-Frame-Options 헤더를 제거 할 필요가

X-Content-Security-Policy: frame-ancestors 'self' example.com *.example.com 
관련 문제