javascript:如何连续加载页面

时间:2012-03-18 22:18:21

标签: javascript loading

我知道这听起来有点违反直觉,

但我正在寻找一种方法来持续加载网页。有了这个我的意思是我想要Chrome上的favicon,保持蓝色动画GIF。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

我会做这样的事情:

<iframe style="display:none;" id="iframe1" src="loader.php" ></iframe>
<iframe style="display:none;" id="iframe2" src="" ></iframe>

创建一个名为loader.php的.php文件,然后输入如下内容:

<? sleep(6); ?>

然后在您的主页面中使用:

// DONT FORGET TO INCLUDE JQUERY SOMEWHERE IN YOUR HEADER
<script type="text/javascript">
    var activeIframe = 2;
    var timer = 1;
    function startLoader(){
        if(activeIframe == 1){
            activeIframe = 2;
            $('#iframe1').attr('src', 'loader.php?timer='+timer);
            timer++;
        }else{
            $('#iframe2').attr('src', 'loader.php?timer='+timer);
            activeIframe = 1;
            timer++;
        }
    }

    $(document).ready(function() {
        setInterval("startLoader()",4000);
    });
</script>

此文件加载到第一个iFrame中。它将在6秒后完成,但您将在此之前更改第二个iFrame的内容:4秒后调用相同的文件。只需重复此过程。使用两个iframe和6秒睡眠的原因是为了确保iframe能够加载(因为每个div将每8(4 + 4)秒重新加载一次),否则浏览器将/可能崩溃。通过使用两个iframe,一个将始终加载而另一个允许完成。 loader.php?timer=<number>用于阻止浏览器缓存页面(尽管我认为它无论如何都不能这样做,因为PHP sleep()函数总是减慢加载速度,但只是为了安全的)

答案 1 :(得分:1)

您可以注入iframe,然后使用document.open()

var f = document.createElement('iframe');
f.style.display = 'none';
document.body.appendChild(f);
f.contentWindow.document.open();
console.log(f.contentWindow.document.readyState); // "loading"

要停止加载,请致电f.contentWindow.document.close();

之前在Firefox 10中运行良好。在Chrome中,这不起作用。要欺骗Chrome,可以使用以下内容:

var f = document.createElement('iframe');
f.onload = function(){
    if (f.parentNode) setTimeout(function() {
        f.contentWindow.location.reload();
    },40);
};
f.src = 'about:blank';
f.style.display = 'none';
document.body.appendChild(f);

要在这种情况下停止旋转,请从文档中删除<iframe>

f.parentNode.removeChild(f);