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


当前回答

document.getElementById('some_frame_id').contentWindow.location.reload();

注意,在Firefox中,window.frames[]不能通过id索引,而是通过名称或索引

其他回答

这种方法避免了向某些浏览器添加历史记录(不必要的开销)。正文部分:

    <div id='IF'>
    <iframe src='https://www.wolframalpha.com/input?i=Memphis%20TN%20Temperature' 
        style="width:5in; height:6in"  // or whatever you want in your Iframe
        title'Temperature'></iframe>
    </div>

然后在某些JAVASCRIPT中,你可能会有这样的函数:

    function    UPdate()    { // Iframe
    T1=document.getElementById('IF')
    T2=T1.innerHTML
    T1.innerHTML=T2
}

另一个解决方案。

const frame = document.getElementById("my-iframe");

frame.parentNode.replaceChild(frame.cloneNode(), frame);

在我的例子中,简单地替换iframe元素的src属性并不能令人满意,因为在加载新页面之前,人们会看到旧的内容。如果你想提供即时的视觉反馈,这种方法会更好:

var url = iframeEl.src;
iframeEl.src = 'about:blank';
setTimeout(function() {
    iframeEl.src = url;
}, 10);
document.getElementById('iframeid').src = document.getElementById('iframeid').src

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

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

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

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