2017-03-26 11 views
0

여기는 내 첫 번째 질문입니다. 실수로 인해 미안합니다 ...이 예제에서 'scrollHeight'가 'undefined'로 표시되는 이유와 html 파일을 전환하는 동안 iframe에서 오류가 발생하는 이유는 무엇입니까?

저는 Apache2가 설치된 Raspberry Pi에서 html, css 및 javascript로 웹 세미나를 작성하려고합니다. 그래서 html 파일의 내용을 기반으로 자동 iframe 높이 funktion을 스크립트합니다. 이 html 파일은 버튼을 눌러 변경되었습니다. 여기

Uncaught TypeError: Cannot read property 'scrollHeight' of undefined at HTMLIFrameElement.document.getElementById.onload

내 자바 스크립트입니다 :

그래서, 난 내 탐색기 (크롬)에서이 오류가이 코드의 변화를 많이 시도하지만 난 모든 얻을

function setIframeHeight(iframe_obj) { 
var d = document.getElementById(iframe_obj).onload = function() { 
var this_body = d.body, 
    html = d.documentElement; 

var height = Math.max(this_body.scrollHeight, this_body.offsetHeight, 
    html.clientHeight, html.scrollHeight, html.offsetHeight); 
    // stackoverflow.com/questions/1145850/ 
obj.style.height = height + 'px'; 
} 
} 

같은 오류 시간.
<html lang="de"> 
<head> 
<meta charset="utf-8"> 
<script type="text/javascript" src="javascriptfunctions.js"></script> 
<link href="design.css" rel="stylesheet"> 
</head> 

<body> 
<section> 
    <iframe class="IframeClassSection" id="iframe-mainpage" src="/informationContainer/startseite.html" onload="setIframeHeight('iframe-mainpage');" scrolling="no"></iframe> 
</section> 
</body> 
</html> 

그리고 그 iframe을위한 마지막 CSS 클래스에서

: 다음을 다시로드하는 동안

.IframeClassSection { 
display: block; 
background-color: orange; 
margin-left: 242px; 
margin-right: 200px; 

width: 718px; 
/* height: 2000px; */ 
border: none; 
overflow: hidden; 
} 

내가 그나마이 코드는 오류가 여기에

내 HTML 스크립트 (단지 목선)입니다 페이지, 난이처럼 iframe 대응의 새 HTML 위치를 설정하려고 바로 그 때 :

<input class="SteuerungObenButton" type="button" value="Startseite"  onclick="document.getElementById('iframe-mainpage').src='/informationContainer/startseite.html';" /> 

내가 하루 종일 검색 하지만 작동하지 않는 해결책을 찾을 수 없습니다.

답변

0

여기에 많은 문제가 있습니다.

# 1 먼저 무엇보다도,의 당신의 catch되지 않은 형식 오류의 문제를 해결 할 수 있습니다. 오류는 d에서 document.getElementById (iframe_obj) .onload과 같습니다. 로드 기능과 같습니다. Functionbody 또는 documentElement 속성을 가지고 있지 않기 때문에, 당신의 this_bodyHTML 항상 undefined되며 thusly 히, scrollHeightoffsetHeight 당신이보고있는 오류를 던지는 undefined에 존재하지 않습니다.

# 2 Iframe에 body 또는 documentElement 속성이 없으며 Iframe에서 ContentWindow를 가져와야합니다. (참고로, 같은 기원에있다).

# 3 하단에는 obj이 있습니다. 아마도 코드의 다른 부분 일 수도 있지만, 예제에는 전혀 나와 있지 않습니다. 이 광고 소재가 iframe 자체가되도록 하시겠습니까? d입니다. 내가 버튼을 누르면 경우, 지금 올바른 높이를 설정,하지만 난 페이지를 다시로드 할 때 (단지), 높이가 설정

function setIframeHeight(iframeStringId) { 
    var d = document.getElementById(iframeStringId); 
    d.addEventListener('load', function() { 
    var this_body = d.contentWindow.document.body; 
    var html = d.contentWindow.document.documentElement; 

    var height = Math.max(this_body.scrollHeight, this_body.offsetHeight, 
     html.clientHeight, html.scrollHeight, html.offsetHeight); 
    d.style.height = height + 'px'; 
    }); 
} 
+0

감사 :

그래서 완전히 그것을 해결하기 위해이 주사를 정적 값으로 ... onload 이벤트가 페이지 새로 고침을 위해 작동하지 않았습니까? – Technix