2013-09-25 6 views
0

iframe의 내용을 기준으로 dinamically 크기를 변경하려면 jQuery를 사용하므로 스크롤 막대가 표시되지 않습니다. 스크립트는 매우 간단하고 IE9에서는 정상적으로 작동하지만 크롬에서는 아무 것도 일어나지 않습니다. debbuging을위한 작은 "경고"를 추가하고 "cont_height"라는 변수가 크롬에서 정의되지 않았 음을 알았습니다.iframe 콘텐츠 높이가 크롬에서 null

모든 파일은 iframe에로드 된 페이지를 포함하여 내 컴퓨터에 있으므로 크로스 도메인 문제가 없어야합니다.

크롬의 디버깅 도구에서 다음과 같은 오류가 발생합니다. "원본"null "이"null "인 프레임에 액세스하지 못했습니다. 프로토콜, 도메인 및 포트가 일치해야합니다. 나는 액세스 할 수있는 게 아니에요, 여기

내가 대신 문서 준비 중 "$ (창) .load"로 시도 코드

<script type="text/javascript" src="../js/jquery-1.10.2.min.js"> </script> 
     <script type="text/javascript"> 
      $(document).ready(function() { 
       $('#mainframe').load(function() { 
        var cont_height = $(this).contents().height(); 
        alert(cont_height); 
        $(this).height(cont_height); 
       }); 
      }); 
     </script> 

입니다하지만 난 그게 타이밍 문제라고 생각하지 않습니다 데이터는 사용 권한 등으로 인해 발생합니다. 네가 나에게 줄 수있는 어떤 힌트라도 정말 고마워. 해결책은 javascript에도 있습니다.

+0

크롬은 웹 서버없이 직접 파일을 실행하는 문제가 있습니다. 도메인이 없기 때문에 도메인이 'null'인 것을 좋아하지 않습니다. – Halcyon

+0

내가 볼 수 있듯이, 가짜 도메인이나 뭔가를 설정할 수 있습니까? 나는 로컬 파일을 사용하여 평가 될 것입니다. – Faito

+0

@FritsvanCampen이 말한 바는 파일 시스템을 통해 ('file : /// C/myFile.html')로 html을 브라우징 할 경우, null 근원을 갖고 있으며 그 결과로 문제가 발생한다는 것입니다. 로컬 웹 서버에서 이들을 실행할 수 있으며이를 통해 정렬 할 수 있습니다 ('http : // localhost/myFile.html'). 쉬운 웹 서버를 사용하고 IIS, Apache 또는 다른 것을 실행하지 않으려면 python을 설치하고 컴퓨터의 명령 줄에서 html 파일이있는 경로에'python -m SimpleHTTPServer'를 실행하면됩니다 . 그것의 아주 가벼운 무게 로컬 웹 서버. –

답변

0

콘텐츠를 기준으로 iframe의 크기를 조정 한 가장 좋은 방법입니다.

<script> 
    function resizeMe(id) { 

     var theFrame = document.getElementById(id); 




     var theBody = (theFrame.contentWindow.document.body || theFrame.contentDocument.body) 
     var newHeight = Math.max(theBody.scrollHeight, theBody.offsetHeight, theBody.clientHeight); 

     theFrame.height = (newHeight + "px"); 

    } 
</script> 


<iframe id="helloworld" ... onload="resizeMe('helloworld')"></iframe> 

iframe 문서에 parent.resizeMe ('helloworld')가있는 부모 문서를 호출하게 할 수 있습니다.

<body onload="parent.resizeMe('helloworld')"> 
... 
</body> 

또는 jQuery를 가지고 있기 때문에 ...

<body> 
    ... 
    ... 
    <script> 

     $(document).ready(function(){ 
      parent.resizeMe('helloworld'); 
     }); 
    </script> 

</body> 
+0

높이를 조정하는 것은 좋고 안전한 방법이지만 높이 평가하는 것은 iframe의 contentWindow 또는 contentDocument에 액세스 할 수 없다는 것입니다. 어쩌면 iframe이 내 메인 페이지를 보낼 수있는 방법이있을 것입니다. – Faito

+0

iframe이 부모 창과 동일한 도메인으로 이동합니까? 아니면 다른 도메인의 콘텐츠를 얻습니까? – teewuane

+0

iframe 콘텐츠는 기본 페이지와 동일한 폴더에 있습니다. 페이지가 컴퓨터에서 오프라인으로 로컬로 테스트 될 메시지 통신이 필요합니다. – Faito

관련 문제