我知道这听起来有点违反直觉,
但我正在寻找一种方法来持续加载网页。有了这个我的意思是我想要Chrome上的favicon,保持蓝色动画GIF。
有什么建议吗?
答案 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);