在iframe的onload事件中加载Ajax

时间:2013-03-27 13:35:56

标签: javascript ajax iframe

我正在尝试在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();
 }

因此,想法是在加载页面时在iframe中加载page.php。

我的问题,到目前为止,这甚至可能是什么?它在这一点上不起作用。问题是Javascript在iframe中找不到div。如果我将相同的div放在iframe之外,它确实有用。

1 个答案:

答案 0 :(得分:0)

将HTML置于iframe标记内无效。这是不正确的HTML。

iframe包含整页内容。这意味着他们拥有自己的windowdocument。因此,当您调用document.getElementById时,您在父窗口中执行此操作,而不是在iframe内部。您需要做的是在iframe中查找其文档中的元素。您可以通过访问iframe的contentWindow属性来执行此操作:

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