2013-03-27 4 views
0

Я пытаюсь загрузить страницу Ajax в событие onload в iframe (если возможно?).Загрузка Ajax в событие onload iframe

Так у меня есть IFRAME:

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

И Javascript

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(); 
} 

Так идея заключается в том, чтобы загрузить page.php внутри фрейма при загрузке страницы.

Мой вопрос, это даже возможно, что вы написали до сих пор? На данный момент это не работает. Проблема в том, что Javascript не находит div в iframe. Он работает, если я помещаю тот же div вне iframe.

ответ

0

Вставка HTML внутри тега iframe ничего не делает. Это неверный HTML.

IFrames содержит полную страницу внутри них. Это означает, что у них есть свои window и document. Поэтому, когда вы вызываете document.getElementById, вы делаете это в родительском окне, а не внутри iframe. Что вам нужно сделать, так это искать элемент внутри iframe, проходящий через его документ. Вы можете сделать это путем доступа contentWindow свойства Iframe в:

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

Я попробовал это, но я все еще получаю ошибку на iframe.contentWindow части. Javascript продолжает возвращаться, что он не находит div внутри iframe. –

+0

Этого не будет, если его там нет. И не будет, если: a) вы загружаете страницу в iframe, у которой есть div с этим ID; или b) создать div и добавить его в файл document.body iframe. – juandopazo

+0

Да, это проблема. Я попробовал a), но, похоже, не работает. Где я могу узнать больше о b) или как мне это сделать? –

Смежные вопросы