2013-03-27 9 views
0

iframe의 onload 이벤트에 Ajax 페이지를로드하려고합니다 (가능하면?).iframe의 onload 이벤트에 Ajax로드하기

function loadIjax(divId,strURL) 
{ 

if (window.XMLHttpRequest) 
{// code for IE7+, Firefox, Chrome, Opera, Safari 
xmlhttp=new XMLHttpRequest(); 
} 
else 
{// code for IE6, IE5 
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
} 
xmlhttp.onreadystatechange=function() 
{ 
if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    // show ajax response 
    parent.document.getElementById(divID).innerHTML=xmlhttp.responseText; 
    } 
} 
xmlhttp.open("GET",strURL,true); 
xmlhttp.send(); 
} 

<iframe onload="loadIjax('ipage','./page.php');"> <div id="ipage"></div> </iframe> 

그리고 자바 스크립트가 그래서 아이디어는 페이지가로드 될 때 iframe을 내부 page.php로드하는 것입니다 :

그래서 나는 iframe이 있습니다.

제 질문은 지금까지 작성한 내용까지도 가능합니까? 이 시점에서 작동하지 않습니다. 문제는 Javascript가 iframe에서 div를 찾지 못한다는 것입니다. 동일한 div를 iframe 외부에두면 작동합니다.

답변

0

iframe 태그 안에 HTML을 삽입해도 아무런 효과가 없습니다. 잘못된 HTML입니다.

iframe에는 전체 페이지가 포함되어 있습니다. 즉, 자신의 windowdocument을가집니다. 따라서 document.getElementById으로 전화를 걸면 iframe 내부가 아닌 부모 창에서 작업하고있는 것입니다. 당신이해야 할 일은 iframe 안에있는 문서를 살펴 보는 것입니다. 당신은 iframe 대응의 contentWindow 속성에 액세스하여 해당 작업을 수행 할 수 있습니다

var iframe = document.getElementById('myIframeId'); 
iframe.contentWindow.document.getElementById('containerId').innerHTML = 'foo'; 
+0

나는 그것을 시도하지만 난 여전히 iframe.contentWindow 부분에 오류를 받고 있어요. Javascript는 iframe 내부에서 div를 찾지 못하고 계속 반환합니다. –

+0

그것이 없으면 그렇지 않을 것입니다. 그리고 그것은 다음과 같은 경우가 아니면 안됩니다 : a) 해당 ID를 가진 div가있는 iframe에서 페이지를로드하십시오. 또는 b) div를 만들고 iframe의 'document.body'에 추가합니다. – juandopazo

+0

예, 문제가있는 것 같습니다. 나는 시도했다. 그러나 일하는 것처럼 보이지 않는다. 나에 관해서는 어디에서 더 읽을 수 있습니까? 아니면 어떻게해야합니까? –

관련 문제