如何使用Javascript刷新IFrame?

时间:2010-01-14 14:42:34

标签: javascript iframe

我有一个带有IFrame和Button的网页,按下按钮后我需要刷新IFrame。这有可能,如果是这样的话怎么样?我搜索过,找不到任何答案。

13 个答案:

答案 0 :(得分:120)

var iframe = document.getElementById('youriframe');
iframe.src = iframe.src;

答案 1 :(得分:95)

这应该有所帮助:

document.getElementById('FrameID').contentWindow.location.reload(true);

编辑:根据@ Joro的评论修正了对象名称。

答案 2 :(得分:11)

如果iframe是从同一个域加载的,你可以这样做,这更有意义:

iframe.contentWindow.location.reload();

答案 3 :(得分:6)

适用于IE,Mozilla,Chrome

document.getElementById('YOUR IFRAME').contentDocument.location.reload(true);

答案 4 :(得分:3)

您可以使用这种简单的方法

function reloadFrame(iFrame) {

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

}

答案 5 :(得分:2)

来自here

var f = document.getElementById('iframe1');
f.src = f.src;

答案 6 :(得分:2)

2017:

如果它只在同一个域中:

iframe.contentWindow.location.reload();

会奏效。

答案 7 :(得分:1)

以下是HTML代码段:

<td><iframe name="idFrame" id="idFrame" src="chat.txt" width="468" height="300"></iframe></td>

我的Javascript代码:

window.onload = function(){
setInterval(function(){
    parent.frames['idFrame'].location.href = "chat.txt";
},1000);}

答案 8 :(得分:1)

直接重置src属性:

iframe.src = iframe.src;

使用缓存清除的时间戳重置src:

iframe.src =  iframe.src.split("?")[0] + "?_=" + new Date().getTime();

当查询字符串选项不可用时清除src(数据URI):

var wasSrc = iframe.src

iframe.onload = function() {
    iframe.onload = undefined;
    iframe.src = wasSrc;
}

答案 9 :(得分:1)

如果您使用哈希路径(例如mywebsite.com/#/my/url),可能无法在切换哈希时刷新帧:

<script>
    window.onhashchange = function () {
        window.setTimeout(function () {
            let frame = document.getElementById('myFrame');
            if (frame !== null) {frame.replaceWith(frame);}
        }, 1000);
    }
</script>

不幸的是,如果您不使用超时,JS可能会在页面完成内容加载之前尝试替换框架(从而加载旧内容)。我尚不确定解决方法。

答案 10 :(得分:0)

如果页面中有多个iFrame,则此脚本可能很有用。我认为iFrame源中有一个特定的值可用于查找特定的iFrame。

var iframes = document.getElementsByTagName('iframe');
var yourIframe = null
for(var i=0; i < iframes.length ;i++){
    var source =  iframes[i].attributes.src.nodeValue;
    if(source.indexOf('/yourSorce') > -1){
        yourIframe = iframes[i];
    }   
}
var iSource = yourIframe.attributes.src.nodeValue;
yourIframe.src = iSource;

将“/ yourSource”替换为您需要的值。

答案 11 :(得分:0)

如果您的iframe网址没有变化,您只需重新创建即可。

如果您的iframe不是来自同一个来源(协议方案,主机名和端口),您将无法知道iframe中的当前网址,因此您需要iframe文档中的脚本与其交换消息父窗口(页面窗口)。

在iframe文档中:

window.addEventListener('change', function(e) {
  if (e.data === 'Please reload yourself') {
    var skipCache = true; // true === Shift+F5
    window.location.reload(skipCache);
  }
}

在您的信息页中:

var iframe = document.getElementById('my-iframe');
var targetOrigin = iframe.src; // Use '*' if you don't care
iframe.postMessage('Please reload yourself', targetOrigin);

答案 12 :(得分:-1)

您可以使用:

JS:

function refreshFrame(){
    $('#myFrame').attr('src', "http://blablab.com?v=");
}

HTML:

`<iframe id="myFrame" src=""></iframe>`

JS小提琴:https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting