0

我正在尝试在 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 之外,它确实有效。

4

1 回答 1

0

将 HTML 放在 iframe 标记中什么都不做。这是不正确的 HTML。

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

var iframe = document.getElementById('myIframeId');
iframe.contentWindow.document.getElementById('containerId').innerHTML = 'foo';
于 2013-03-27T13:40:31.390 回答