2010-04-14 4 views
2

크로스 도메인 src가있는 iframe을 자동 높이기 위해 javascript로 시도했지만 iframe contentWindow의 높이를 가져 오려고하면 "Access Denied"가 발생합니다. 아무 방법이라도 아는 사람?iframe with autoheight

+0

대상 iframe이 다른 도메인/포트/프로토콜에 있기 때문에 iframe의 내용을 가져올 수 없습니다. 당신이 iframe을 고수하고있는 것은 무엇입니까? 왜냐하면 당신의 상황에 대한 접근법이있을 수 있기 때문입니다. – Warty

+1

iframe에서 하위 도메인 페이지를 고수하고이를 작동시키는 방법을 찾았습니다. 두 페이지에서 동일한 도메인 만 설정 했으므로 iframe contentWindow가 "액세스 거부"메시지없이 표시됩니다. 이것은 스크립트입니다. 과 함께, 당신은 자바 스크립팅 크로스 하위 도메인을 사용할 수 있습니다. 감사합니다. PD. 내 영어로 미안해! :에스 – eos87

답변

3

ItzWarty가 맞습니다. 상위 페이지는 높이를 찾기 위해 하위 문서와 통신 할 수 없습니다. 2008 년, Michael Mahemoff는 약간의 지침을 제공 할 수있는 Cross-Domain Communication with IFrames에 대한 자세한 개요를 올렸습니다.

그러나 희망적입니다. - HTML5에는 Firefox 3, Safari 4, Chrome 2, Opera 9.2, 심지어 IE 8에서 지원되는 "Cross-document messaging"이라는이 상황이 개선되었습니다. 8. 사용자가 지원되는 브라우저 만 사용하면 사용할 수 있습니다.

IFRAME 요소의 "scrolling"속성을 기본적으로 "auto"로 설정하고 window.postMessage를 테스트 할 수 있습니다. 성공하면 "scrolling"을 "no"로 설정하고 IFRAME의 크기를 지정하는 함수를 사용하십시오 따라서.

최근에 비슷한 문제 (domain.tld의 상위 페이지에서 blog.domain.tld의 프레임 구성)를 처리했지만 지원되지 않았지만 Mahemoff가 얻으려고 설명한 "이전 document.domain hack"을 사용할 수있었습니다. 오페라에서.

행운을 비네.

1

콘텐츠를 가져온 서버에서 프록시를 만든 경우 JavaScript에 이러한 제한이 적용되지 않습니다.

1

도메인 문제는 한 가지 문제 일뿐입니다. IE8이 다른 것입니다. iframe에 액세스 할 수 있다고하더라도 IE8은 body.clientHeight 정보를 정확하게 검색 할 수 없습니다. Firefox는 작동합니다 ...