2010-02-19 6 views
2

iframe의 URL을 폴링하여 부모로부터 무언가를 해시 할 수 있다고 들었습니다. 내가해야 할 일은 교차 도메인 iframe의 동적 높이를 동적으로 설정하는 것입니다. 따라서 높이가 변경 될 때마다 iframe은 url을 someurl # height로 설정합니다. 이제 부모로부터 해시 (#height)에 액세스해야하지만 여전히 나를 허용하지 않습니다. 이 경우 iframe 내부의 iframe은 프록시가 아닙니다. 어쩌면 내가 뭔가 잘못하고있는거야, iframe의 url을 어떻게 조사 할까?도메인 간 iframe 크기 조정

iframe.contentWindow.location.href - 보안 경고 iframe.src는 - 대개는 끝낼 방법이 아니다 해시

+0

당신이 크로스 도메인 정책 파일을 사용하거나하지 iframe을 액세스하기 위해 무슨 일 도메인 알고 :

비슷한 질문에 대한 내 대답은 참조? – Robusto

+0

이것은 트릭 [http://stackoverflow.com/questions/5606920/cross-domain-iframe-resizer/6940531#6940531] [1]을 잘 할 것입니다. 는 는 [1] : http://stackoverflow.com/questions/5606920/cross-domain-iframe-resizer/6940531#6940531 – thomax

답변

0

없이 URL을 반환합니다. 수행해야 할 작업은 iframe 호출에 window.parent.location = "#<iframe height>";을 호출하고 부모를 iframe 높이의 해시 값으로 설정하는 것입니다.

부모 페이지는 onhashchange 이벤트 (IE, Firefox)를 사용하여 변경 사항을 캡처 한 다음 iframe의 높이 또는 해시 값을 100ms마다 확인하는 타이머를 설정합니다. 이것이 Google CSE가 수행하는 방법입니다.

Handle URL anchor change event in js

+0

는하지만 iframe이이 window.parent에 액세스 할 수 있습니다하면 부모의 경우 다른 도메인? 같은 보안 문제가 아닌가요? – Marius

+0

방금 ​​확인했는데 해결책은 효과가 있지만 ... 어떻게 할 수 있습니까? 이것이 보안 위반이 아닌 이유는 무엇입니까? – Marius

+0

@Marius : 부모 페이지 위치를 변경하는 중이거나 데이터에 액세스하지 않고 있어도 보안상의 문제는 아닙니다. 그것은 사용성 문제 (동의없이 상위 페이지 변경 등)로 간주 될 수 있지만, 사실 그것이 작동하는 이유는 보안 문제를 피하는 것입니다. 이것이 틀에 박히지 않으려면 사이트가 틀을 잡는 방법입니다 - 단지'top.location = window.location; '을 설정하십시오. –

관련 문제