2012-02-27 3 views
0

이 옵션을 사용할 수는 없지만 어쩌면 당신은 그것을하기위한 몇 가지 전략을 알고있을 것입니다! 나는 http://www.mydomain.com에있어, 나는 다른 도메인의 jQuery로 iframe을 넣어 :소스가 다른 도메인에있을 때 IFRAME 높이를 어떻게 변경할 수 있습니까?

​<div id="myContent​​​​​​​"></div>​ 

$('#myContent').html('<iframe id="myFrame" src="www.anotherdomain.com"></iframe>');​ 

음,로드 페이지 www.anotherdomain.com, 그것은 내 꺼야, 그래서 나는 코드의 종류를 추가 할 수 있습니다 !

내가하고 싶은 것은 myFrame의 높이를로드 된 페이지의 실제 크기와 관련이있다 (나는 알 수 없다.

삽입 된 페이지 (anotherdomain.com)의 크기를 부모 DOM (mydomain.com)과 comunicate 할 수있는 방법이 있습니까?

나는 그것을 모른다. 그러나 나는 더빙한다. 그러나 묻지 마라.

+0

같은 원본 정책을 위반하지 않는 한 일반 DOM 기능을 통해 iframe (또는 iframe의 상위 항목)의 DOM에 액세스하고 이에 따라 크기를 확인하고 크기를 조정할 수 있습니다. – scibuff

+0

글쎄, 내 경우에는이 정책 위반 한거야, 그렇지? :) – markzzz

+0

도메인 간 통신은 매우 제한적이며 원격 호스트의 경우에 따라 불가능합니다. http://www.ibm.com/developerworks/library/wa-aj-jsonp1/ JSONP를 사용하여 원격 사이트에서 정보를 검색하고 검색 할 수 있습니다. – Downpour046

답변

1

내가 찾은 유일한 해결책은 url을 통해 iframe 높이를 전달하는 것입니다. 당신은 여기 내 테스트를 찾을 수 있습니다

http://jsfiddle.net/Grsmto/nBWrJ/2/(업데이트)

이 솔루션은 크로스 브라우저 (크롬, FF, 즉 모든 버전, 모바일 등) 및 크로스 도메인을 사용할 수 있습니다.

iframe 코드 및 iframe 호스트에 대한 액세스 권한이 있어야합니다. iframe 내부에서 publishHeight() 함수를 호출하기 만하면 내용을 변경하더라도 원하는 경우 iframe 높이를 새로 고칠 수 있습니다.

jquery 없이도 작동합니다 (주로 순수 자바 스크립트로 작성 ...).

http://www.yourdomain.com/index.html#1458px 

그러나 당신은 쉽게 제거 이하 추한 무언가로 변경해야합니다 유일한 불편은 당신이 좋아하는 URL의 높이가 것입니다.

편집 : http://easyxdm.net/wp/

편집 2 :를 귀하의 페이지에서 첫 번째 jsfiddle 페이지에 코드를 넣어 그것은 Disqus에 트위터가 그렇게이 라이브러리를 사용하는 것이 보인다. iframe에는 iframe 코드 (오른쪽 하단에 빨간색 div "myiframe")를 넣습니다.희망이 그것은 분명하다 ... 하지만 아래의 내 링크를 확인하고 더 나은 솔루션이어야합니다.

+0

좋은 해결책이 될 수 있습니다! 불행히도 나는 코드를 이해하지 못한다. (어느 코드가 iframe 호스트에있는 내 iframe에 놓여 있는지). 더 잘 설명해 주시겠습니까? – markzzz

+0

또한,'publishHeight()'의 정의가 보이지 않습니까? – markzzz

+0

죄송합니다. 내 jsfiddle이 잘못되었습니다! 다음은 좋은 것입니다 : http://jsfiddle.net/Grsmto/nBWrJ/2/ 내 게시물을 편집합니다. – Grsmto

2

당신은 PostMessage를 사용하여 다른 도메인에 iframe을 사이 (예 : 프레임의 높이와 같은) 메시지를 보낼 수 있습니다 https://developer.mozilla.org/en/DOM/window.postMessage

+0

IE의 모든 버전에서이 작업이 실패 할 것이라고 생각합니까? :) – markzzz

+0

IE8에서 지원 + – lamplightdev

+2

이것은 아마도 읽을 가치가 있습니다 : http://www.onlineaspect.com/2010/01/15/backwards-compatible-postmessage/ – lamplightdev

1

도메인 간 통신은 매우 제한적이며, 원격 호스트에 불가능 따라. http://www.ibm.com/developerworks/library/wa-aj-jsonp1/ JSONP를 사용하여 원격 사이트에서 정보를 가져오고 검색 할 수는 있지만 초보자에게는 적합하지 않습니다.

저에게 효과가있는 것으로 발견 된 작업은 원격 파일을 포함하기 위해 서버 측 언어를 대신 사용했습니다. 그래서 대신 <은 iframe>

의 나는 PHP 서버 측 같이 포함했다 : 물론

<?php include 'http://www.example.com/file.txt?foo=1&bar=2'; ?> 

이 당신이 PHP를 사용하는 경우에만 적용됩니다. 그런 식으로 DOM 요소를 조작 할 수있었습니다.

+0

하지만 어디에서 그것을 포함합니까? 맞은 iframe에? 차이점은 무엇입니까? – markzzz

+0

아니요, iframe이 아니라 코드에 있습니다. iframe을 전혀 사용하지 않습니다. iframe 라우트로 간다면 도메인 간 통신을 처리해야하는데 이는 매우 어려운 경로입니다. JSONP가 없으면 iframe의 높이를 자동으로 감지 할 수 없습니다. JSONp와 같은 다른 방법이나 내가 제안한 내용 (코드 본문에 PHP를 포함하여 컨텐트를 포함시키지 않는 경우)을 사용하지 않는 한 막 다른 길을 찾아야합니다. – Downpour046

+0

예, 실제로 필요한 것은 ... 내 도메인 간 통신입니다. :) – markzzz

관련 문제