我想重新加载一个<iframe>使用JavaScript。到目前为止,我发现最好的方法是将iframe的src属性设置为自身,但这不是很干净。什么好主意吗?


当前回答

在IE8中使用。net,设置iframe。SRC第一次是可以的, 而是设置iframe。SRC第二次没有引发iframed页面的page_load。 为了解决这个问题,我使用了iframe.contentDocument.location.href = "NewUrl.htm"。

当使用jQuery thickBox并尝试在thickBox iframe中重新打开同一页面时发现它。 然后它只显示之前打开的页面。

其他回答

<script type="text/javascript">
  top.frames['DetailFrame'].location = top.frames['DetailFrame'].location;
</script> 

如果你使用Jquery,那么有一行代码。

$('#iframeID',window.parent.document).attr('src',$('#iframeID',window.parent.document).attr('src'));

如果你们是和同一个家长一起工作的话

$('#iframeID',parent.document).attr('src',$('#iframeID',parent.document).attr('src'));

我有一个问题,因为我没有使用超时给页面时间更新,我将src设置为“,然后将其设置回原来的url,但什么都没有发生:

function reload() {
   document.getElementById('iframe').src = '';
   document.getElementById('iframe').src = url;
}

但是它没有重新加载网站,因为它是单线程的,第一个改变不做任何事情,因为这个函数仍然占用线程,然后它设置回原来的url,我猜chrome不重新加载是因为性能或其他什么,所以你需要做:

function setBack() {
   document.getElementById('iframe').src = url;
}
function reload() {
   document.getElementById('iframe').src = '';
   setTimeout(setBack,100);
}

如果setTimeout时间太短,它不工作,所以如果它不工作,尝试将它设置为500或其他东西,看看它是否工作。

这是在最新版本的chrome在写这篇文章的时候。

使用self.location.reload()将重载iframe。

<iframe src=“https://vivekkukumar11432.wordpress.com/“width="300" " height="300"></iframe> < br > < br > <输入类型=“按钮”值=“重新加载”/>

document.getElementById('iframeid').src = document.getElementById('iframeid').src

它将重新加载iframe,甚至跨域! 通过IE7/8, Firefox和Chrome测试。

注意:正如@user85461所提到的,如果iframe src URL中有一个散列,这种方法就不起作用了(例如http://example.com/#something)。