2011-10-21 226 views
4

我有很多的iframe加载我的网页上的特定内容。父母和iframe在同一个域上。如何强制一个iFrame重新加载一次它加载

我在iframe中有一个滚动条,它似乎无法在所有浏览器中正确加载。但是当我刷新iframe时,它会加载完美。我不知道为什么这样做。

我已经使用元刷新,它的工作原理,但我不希望页面不断刷新,只是一次。

我正在寻找的解决方案将在iFrame打开后重新加载iFrame内容,并且延迟时间最短。

感谢您的时间和帮助!

-Brett

----------编辑:--------

我意识到我的页面加载我所有的I帧的当索引被加载。 iframes出现在一个jQuery覆盖中,它也被加载,但可见性:隐藏直到被调用。所以在这个电话会议上,当我想要重新加载iframe。

任何人都可以帮助我想出一个JavaScript函数,当我点击链接到iFrame时重新加载iFrame?我已经接近了,但是我对js一无所知,并且我一直处于短缺状态。我有一个重新加载页面的功能,但我无法弄清楚如何只调用一次。

我有这个至今:

<script type="text/javascript"> 

var pl; 
var change; 
pl=1; 

function ifr() { 

if (pl=1) { 
    document.location.reload([true]); 
    alert("Page Reloaded!"); 
    change=1; 
    return change; 
} 

change+pl; 

} 

所以基本上它使用的作品重新加载页面的document.location.reload。我试图然后使pl改变为1以外的东西,所以函数不会再运行。我一直使用onLoad从body中调用这个JS。

回答

8

对此的所有线索死了,但我确实找到了一个有效的代码片段。不是由我写的,我不记得它是从哪里来的。只要张贴帮助某人,他们应该有同样的问题。

<div class="overlay-content"> //Content container needed for CSS Styling 



    <div id="Reloader"> //iFrame will be reloaded into this div 

    </div> 



      //Script to reload the iframe when the page loads 
     <script> 
      function aboutReload() { 
       $("#Reloader").html('<iframe id="Reloader" height="355px" width="830px" scrolling="no" frameborder="0" src="about.html"></iframe>'); 
      } 
     </script> 



</div> 

基本上只是加载的iFrame源打开与iFrame的窗口时,而不是在iFrame的负载时,原来的页面加载。

2

在iframe元素本身,设置有载:

iframe.onload = function() {this.contentWindow.location.reload(); this.onload = null;}; 

(仅适用如果iframe的位置是在同一个域中的主网页)

+0

我推荐在事件处理程序中使用'this'而不是'iframe',以防iframe变量被覆盖。 –

+0

好点。将编辑。 (我习惯了很多闭包,所以变量名不太可能被覆盖:p) –

+0

感谢您的快速回复! iframe载入about.html,父项载入index.php。我是否将此代码放入 ' – Brett

+0

这对我有用 - 我在iframe上面添加了脚本,然后添加了onload属性。像魅力一样工作! –

3

除了原来的问题的范围内,然而这个jQuery SNIPPIT与跨域iframe中工作元件,其中contentDocument.location.reload(true)方法不会由于沙盒。

//assumes 'this' is the iframe you want to reload. 
$(this).replaceWith($(this).clone()); //Force a reload 

基本上它会用一个副本替换整个iframe元素。我们正在使用它来强制调整嵌入的第三方“哑”小部件的大小,例如视频播放器,它们的大小在更改时不会注意。