2013-03-27 207 views
0

我想在iframe中的onload事件上加載Ajax頁面(如果可能?)。在iframe的onload事件中加載Ajax

所以,我有一個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文件的iframe內。

我的問題,這是甚至可能到目前爲止寫了什麼?目前它不起作用。問題在於Javascript在iframe中找不到div。如果我在iframe之外放置相同的div,它會工作。

回答

0

將HTML放入iframe標記中不起作用。這是不正確的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。 – 2013-03-27 14:06:20

+0

如果它不在那裏,它不會。除非:a)您在帶有該ID的div的iframe中加載頁面;或b)創建div並將其附加到iframe的'document.body'。 – juandopazo 2013-03-27 14:08:59

+0

是的,這似乎是問題所在。我試過a),但似乎沒有工作。我在哪裏可以閱讀更多關於b)或者我應該怎麼做? – 2013-03-27 14:30:54