我想重新加载一个<iframe>使用JavaScript。到目前为止,我发现最好的方法是将iframe的src属性设置为自身,但这不是很干净。什么好主意吗?
当前回答
在我的例子中,简单地替换iframe元素的src属性并不能令人满意,因为在加载新页面之前,人们会看到旧的内容。如果你想提供即时的视觉反馈,这种方法会更好:
var url = iframeEl.src;
iframeEl.src = 'about:blank';
setTimeout(function() {
iframeEl.src = url;
}, 10);
其他回答
如果你使用Jquery,那么有一行代码。
$('#iframeID',window.parent.document).attr('src',$('#iframeID',window.parent.document).attr('src'));
如果你们是和同一个家长一起工作的话
$('#iframeID',parent.document).attr('src',$('#iframeID',parent.document).attr('src'));
window.frames['frameNameOrIndex'].location.reload();
这种方法避免了向某些浏览器添加历史记录(不必要的开销)。正文部分:
<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
}
document.getElementById('some_frame_id').contentWindow.location.reload();
注意,在Firefox中,window.frames[]不能通过id索引,而是通过名称或索引
我刚刚遇到这在铬和唯一的工作是删除和替换iframe。例子:
$(".iframe_wrapper").find("iframe").remove();
var iframe = $('<iframe src="' + src + '" frameborder="0"></iframe>');
$.find(".iframe_wrapper").append(iframe);
很简单,其他答案中没有提到。