如何以间隔刷新当前页面的iframe?

时间:2016-08-07 23:33:33

标签: javascript html iframe page-refresh

我试图使用此代码:



document.write('<iframe id="frame" src="' + window.location.href + '"><script>setInterval(function ()/{document.getElementById("frame").contentWindow.location.reload();},10000);</script>');
&#13;
<p>an example page</p>
&#13;
&#13;
&#13;
它只是将');追加到页面的末尾。

2 个答案:

答案 0 :(得分:1)

所以,虽然我仍然不清楚你正在尝试解决这个问题,而你的问题还不清楚(回想起来),我很好奇我们如何在不创建无限循环的情况下解决这个问题

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>test</title>
</head>
<body>

    <h1 id="h1"></h1>
    <script type="text/javascript">
        document.getElementById('h1').textContent =  window.location.search;
    </script>


<script type="text/javascript">

    if (window.location.hash === '#origin') {

        var ifr = document.createElement('iframe');
        var props = {
            src: window.document.location.href + '?r=0',
            width: 500,
            height: 300,
            style: "border:1px solid red;width:500px;height:300px;"
        }

        for (var key in props) {
            ifr.setAttribute(key, props[key]);
        }

        document.body.appendChild(ifr);

        setInterval(function(){
            var s = ifr.src.split('?r=')[0];
            ifr.setAttribute('src', s + '?r=' + parseInt( Math.random() * 1000000))
            console.log(ifr.src);
            // you can skip this, but it illustrates the refreshes
            document.getElementById('h1').textContent = ifr.src;
        }, 2000);
    }

</script>
</body>
</html>

因为它们是同一个而不能工作,所以我认为在原始页面上会使用哈希,从子项中省略它以区分它与自己的克隆。

test.html

你必须自己运行它,代码片段不喜欢它的重定向尝试,我不能不同意......, - NB:只在Chrome中运行它,但在其他地方应该有很多不同之处

此外,为了清楚起见,如果您将其保存为path/to/your/file/test.html?r=378426#origin,那么您应该将其作为setInterval()运行

答案 1 :(得分:0)

使用了一个关于如何处理查询字符串的快捷方式,但它的要点就在这里。

创建一个iframe对象,添加其属性然后添加到DOM,最后每隔一段时间用新的查询字符串重新加载页面

    var ifr = document.createElement('iframe');
    var props = {
        src: 'http://example.com/?r=0',
        width: 500,
        height: 300,
        style: "border:1px solid red;width:500px;height:300px;"
    }

    for (var key in props) {
        ifr.setAttribute(key, props[key]);
    }

    document.body.appendChild(ifr);

    setInterval(function(){
        var s = ifr.src.split('?r=')[0];
        ifr.setAttribute('src', s + '?r=' + parseInt( Math.random() * 1000000))
        console.log(ifr.src);
    }, 10000);