是否有一种简单的方法可以在不更改您所在页面的情况下启动和停止浏览器响铃(页面加载指示器)?最好没有外部库或AJAX调用。
答案 0 :(得分:12)
没有。你可以尝试通过执行ajax调用或其他来强制它旋转,但不要。浏览器的那部分不适合您,而是适用于浏览器!
这有点像询问您是否可以更改系统时钟,以便包含时间机器的游戏更加真实。
答案 1 :(得分:3)
你可以调用一个简单的服务器端脚本,让我们称之为'sleep.cgi',这将停止执行(睡眠),并延迟在隐藏的iframe中传递一些简单的自动重新加载页面。这应该可以使任何主流浏览器显示你所谓的“浏览器悸动”(页面加载指示器)。一旦你完成任何你希望throbber显示的原因,你只需将提到的iframe位置重置为空字符串。我就是这样做的:
1)编写一个简单的服务器端脚本,该脚本接收请求并暂停执行最多30秒,不想触及浏览器的页面加载超时墙。一旦睡眠期结束,此服务器脚本会响应以下内容:
<html><body onload="location.reload();"></body></html>
强制它循环,直到您希望浏览器显示“页面加载”指示符。
2)编写支持JavaScript函数,根据请求启动和停止'throbber'并添加我们将使用的HTML元素:
<script>
function startThrobber(){
document.getElementById('throbberFrame').src='sleep.cgi?'+Math.random();
}
function endThrobber(){
document.getElementById('throbberFrame').src='';
}
</script>
<div id="throbberWrapper" style="display:none;visibility:hidden;">
<iframe id="throbberFrame" style="width:1px;height:1px;"></iframe>
</div>
我已经在Chrome / IE / Opera / Firefox中进行了快速测试,似乎工作正常。不过,我从来没有必要做过这样的事情。
编辑:如果你的网络服务器支持PHP脚本,这里是睡眠功能参考:http://php.net/manual/en/function.sleep.php我不是用PHP编写的,但我相信你的PHP文档看起来应该是这样的:
<html><body onload="location.reload();">
<?php
// sleep for 29 seconds
sleep(29);
?>
</body></html>
干杯!
答案 2 :(得分:1)
如果加载了非常耗费CPU的内容,UI会冻结,因此您永远不会看到动画GIF或进度条。
您有XY问题。您可以使用setTimeout将CPU密集型操作划分为较小的块,从而防止浏览器冻结。浏览器throbber是一个UI元素,表示正在从网络加载某些内容;如果你出于任何其他原因使用它会非常混乱。